我的AJAX API插件不起作用

时间:2013-01-11 作者:Gavin Mannion

我创建了一个小小的AJAX插件来计算文章的点击率并绕过缓存,但它不起作用,也没有抛出任何错误。

你能看出我做错了什么吗?

<?php
add_action(\'wp_ajax_nopriv_LogHit_callback\', \'LogHit_callback\');
add_action(\'wp_ajax_LogHit_callback\', \'LogHit_callback\');

function HitCount() {
  ?>
  <script type="text/javascript" >
  jQuery(document).ready(function($) {
    var data = {
        action: \'LogHit_callback\',
        PostId:\'<?php echo get_the_ID() ?>\'
    };
    jQuery.post(\'http://www.test.com/wp-admin/admin-ajax.php\', data, function( r ) {
alert( r );
  });
 </script>
 <?php


  function LogHit_callback() {
    global $wpdb; // this is how you get access to the database

    $postId = $_POST[\'PostId\'];
    $hits = get_post_meta((int)$postId, \'hit-counter\', true);
    $hits = $hits + 1;
    update_post_meta((int)$postId, \'hit-counter\', (int)$hits);
    return $postId;
    exit; // this is required to return a proper result
  }
 }
它将以下内容写入我的HTML中,我在其中调用HitCount函数

 <script type="text/javascript" >

 jQuery(document).ready(function($) {
   var data = {
    action: \'LogHit_callback\',
    PostId:\'86505\'
};
jQuery.ajax(\'http://www.lazygamer.net/wp-admin/admin-ajax.php\', data, function( r )      {
     alert( r );
  });

 </script>
我知道将URL硬编码为admin ajax很糟糕,但我正在尝试排除问题。如果我在写入html的ajax调用中添加了一个警报,它就会工作,这样我就知道正在调用它。

但是插件文件中的第二个警报从未被调用?

1 个回复
最合适的回答,由SO网友:Mateusz Hajdziony 整理而成

没有PHP函数alert, 这就是为什么函数会抛出一个错误,而不会继续处理其余代码的原因。你必须从LogHit_callback 函数使用return (或者用echo) 然后用JavaScript向其发出警报,即向post 功能:

jQuery.post( \'http://www.test.com/wp-admin/admin-ajax.php\', data, function( r ) {
    alert( r );
});
我相信这是post(). 请记住,您始终可以使用浏览器的开发人员工具调试AJAX请求。然后你就会知道到底发生了什么。

结束