Here is a basic setup that I use for AJAX with WordPress. instead of loading wp-load.php; just use WordPress default method for AJAX calls. This allows you to also filter function calls from Javascript through a switch. I also added a quick example for wp_localize_script.
<?php
add_action('wp_enqueue_scripts', 'YOUR_NAME_scripts'); //back end
function YOUR_NAME_scripts( $hook_suffix ) {
wp_enqueue_script('YOUR_NAME-js');
global $blog_id;
$params = array(
'site_url' => site_url(),
'admin_ajax_url' => site_url() . '/wp-admin/admin-ajax.php'
);
wp_localize_script( 'jquery', 'YOUR_NAME', $params );
}
add_action('wp_ajax_nopriv_YOUR_NAME_ajax', 'YOUR_NAME_ajax_function');
add_action('wp_ajax_YOUR_NAME_ajax', 'YOUR_NAME_ajax_function');
function YOUR_NAME_ajax_function(){
fobu_load_classes();
switch($_REQUEST['fn']):
case 'test_ajax':
$output = $_REQUEST['data'];
break;
default:
$output="No function specified, check your jQuery.ajax() call";
break;
endswitch;
ob_clean();
$output=json_encode($output);
if( is_array( $output ) ):
print_r( $output );
else:
echo $output;
endif;
die();
}
?>
<script>
//in YOUR_NAME.js or whatever
jQuery(document).ready(function() {
(function ($) {
jQuery.ajax({
url: YOUR_NAME.admin_ajax_url,
dataType: 'json',
//type:'POST',
data: {
'action':'YOUR_NAME_ajax',
'fn': 'test_ajax',
'data': data
},
success: function(results){
//console.log(results);
if( results ){
}
},// end of success
error: function(errorThrown){console.log(errorThrown);}
});// end of ajax
})(jQuery);
});
</script>