WordPress AJAX问题需要WordPress专家吗?

时间:2011-10-21 作者:Pathik Gandhi

我想使用wordpress ajax调用一个函数,我也为此编写了一段代码。但是,当我调用ajax时,它总是retrun-1。我不知道有谁能帮我解决什么问题。

这是我的密码

作用php

 function my_AJAX_processing_function(){
   //echo  $getLetter = $_GET[\'post_id\'];
   print_r($_GET);
   exit;
    global $wpdb;
    global $post;

    $result = $wpdb->get_results(\'SELECT * FROM wp_posts where post_title LIKE "\'.$getLetter.\'%" AND post_status = "publish" AND post_type="post"\');
    while($row = $result)
    {
      echo \'<a href="\' . $row["guid"] . \'">\' . $row[\'post_title\'] . \'</a><br>\';
    }
    die();
}
add_action(\'wp_ajax_nopriv_download_track_resources\', \'my_AJAX_processing_function\');
页脚。php

    <script type="text/javascript">
jQuery(function($) {
    $(document).ready(function() {
        $(".downloadtrack").bind(\'click\', function(){
            console.log(this.name);
            var siteurl = \'<?php echo esc_url( home_url( \'/\' ) ); ?>\';
            alert(siteurl);
            var val = this.name;
            alert(val);
            var data = {action: \'download_track_resources\', post_id: val};
            $.ajax({
                 url:siteurl+\'wp-admin/admin-ajax.php\',
                 success:function(data){
                   alert(data);
                 }
            });
        });
    });
});
</script>
Html代码

<td height="25"><a href="javascript:void(0);" title="Download <?php the_title(); ?>" class="downloadtrack" name="<?php echo $post->ID;?>"><?php the_title(); ?></a></td>
谢谢

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

答案很简单——你没有给予admin-ajax 它所期待的。

请参考源代码http://core.trac.wordpress.org/browser/tags/3.2.1/wp-admin/admin-ajax.php#L17

if ( ! isset( $_REQUEST[\'action\'] ) )
    die(\'-1\');
因此,确保你正在给它一个行动(你没有)。然后,有一点lower 有:

if ( ! $id )
    die(\'-1\');
因此,请确保您已登录,以及所有其他先决条件AJAX in WordPress Plugins 需要运行。

有关更多信息,请查看AJAX Codex entry.

结束

相关推荐

通过AJAX加载页面并显示标题

一次小规模的、可能很简单的咨询。我通过Ajax加载页面,如下所示:jQuery(\"div.menu a\").addClass(\"ajax\"); var hash = window.location.hash.substr(1); var href = jQuery(\'.ajax\').each(function(){ var href = jQuery(this).attr(\'href\'); if(hash==href.substr(