WordPress admin-ajax.php返回0

时间:2012-12-28 13:46:38

标签: wordpress jquery

目前正在开发一个需要ajax的插件。正在考虑“正确”这样做,所以我尝试使用admin-ajax.php。然而,我总是得到0作为回应,并以某种方式感觉它永远不会到达我的回调。

这是代码,试图保持简单。

加载js并将admin-ajax.php设置为admin

wp_enqueue_script('my-more-posts-ajax', SE_WP_MY_PLUGIN_URI . '/js/more-posts-ajax.js?' . rand(), array('jquery'));
wp_localize_script('my-more-posts-ajax', 'MyAjax', array('ajaxurl' => admin_url('admin-ajax.php')));

回调操作

add_action('wp_ajax_nopriv_my_more_posts', array($this, 'load_more_posts_callback'));
add_action('wp_ajax_my_more_posts', array($this, 'load_more_posts_callback'));

PHP回调函数

public function load_more_posts_callback() {
$response = json_encode(array('success' => TRUE));

header("Content-Type: application/json");
print $response;

exit;
}

JS

jQuery(document).ready(function() {
  jQuery('#my-show-more-form').submit(function(event) {
    /* Prevent submitting normally */
    event.preventDefault();

    var data = {
      action: 'my_more_posts',
      offset: 8
    };

    jQuery.post(MyAjax.ajaxurl, data, function(response) {
      alert('Response: ' + response);
    });
  });
});

任何人都有任何错误的想法?我想我得到了所有代码。

1 个答案:

答案 0 :(得分:-1)

在PHP回调函数中使用wp_die();而不是exit;

所以这将是

header("Content-Type: application/json");
print $response;
wp_die();