我在wp主题中设置了基本的wordpress ajax示例。触发是由modernizr.js检查页面上的媒体查询来完成的。
jQuery(document).ready(function($) { if(Modernizr.mq('only all and (max-width:6300px)')) { var data = { action: 'my_action', whatever: ajax_object.we_value // We pass php values differently! }; // We can also pass the url value separately from ajaxurl for front end AJAX implementations jQuery.post(ajax_object.ajax_url, data, function(data) { $("#trending-Container").html(data).fadeIn(1000); }); } });//end function
我已经本地化了脚本并使其入队。
wp_enqueue_script('mainJS', get_template_directory_uri() . '/js/mainJS.js', array("jquery") ); wp_localize_script( 'mainJS', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );
最后处理请求的函数是:
add_action('wp_ajax_my_action', 'my_action_callback'); add_action('wp_ajax_nopriv_my_action', 'my_action_callback'); function my_action_callback() { global $wpdb; $whatever = intval( $_POST['whatever'] ); $whatever += 10; echo $whatever; die(); }
这总是使我的响应为0(无属性),我也不知道为什么。PS这都是本地的。
Status code 200 Host:lart.co.uk Origin:http://lart.co.uk Referer:http://lart.co.uk/ User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36 X-Requested-With:XMLHttpRequest Form Dataview sourceview URL encoded action:my_action whatever:1234
一切都必须在这里匹配:
PHP
add_action('wp_ajax_ **my_action** ',' **my_action** '); add_action('wp_ajax_nopriv_ **my_action** ',' **my_action** '); 函数 **my_action** (){}
JS
var data = { 动作:“ **my_action** ”, 任何:ajax_object.we_value };