Ajax function returns -1

时间:2011-07-07 作者:Steffi

我有个问题。

我制作了一个简单的ajax函数。当我登录时,它工作得很好。当我注销时,它返回我-1(自Wordpress 3.1起)

为什么?我不明白。准确地说,它返回-1和我的整个HTML代码。(哈哈)我又要发疯了。

PHP (in functions.php)

function say_coucou(){
check_ajax_referer( \'hello\', \'nonce\' );
echo "Hello";
die(); // this is required to return a proper result
exit;
}
add_action(\'wp_ajax_hello_hello\', \'say_coucou\');
add_action(\'wp_ajax_nopriv_hello_hello\', \'say_coucou\');
*JAVASCRIPT/JQUERY/AJAX(在footer.php中)*

function blabla(){
    var toSend = {
      action:"hello_hello",
      post_id: "<?php echo $wp_query->post->ID; ?>",
      nonce: "<?php echo js_escape( wp_create_nonce(\'hello\')); ?>"
    };
    url_action = \'http://www.***********/wp-admin/admin-ajax.php\';
    $.ajaxSetup({cache:true});
    $.ajax({
      url: url_action,
      type:\'POST\',
      data: toSend,
      cache: false,
      success:function(results)
      {
        alert(results)
      }
     });
 } 
需要帮忙吗?谢谢

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

Found It!

我做了重定向,所以我的ajax函数状态是302。。。我删除了重定向,它成功了!

谢谢各位。

SO网友:t31os

Rarst说登录和注销对他都有效,我也可以确认同样的情况,这是我丑陋的测试代码,非常简单,只是你代码的一个黑客版本(用于测试)。

function say_coucou(){
    check_ajax_referer( \'hello\', \'nonce\' );
    echo "Hello";
    die;
}
add_action(\'wp_ajax_hello_hello\', \'say_coucou\');
add_action(\'wp_ajax_nopriv_hello_hello\', \'say_coucou\');
add_action(\'admin_print_footer_scripts\',\'blabla\',20000);
add_action(\'wp_head\',\'enj\',20000);
add_action(\'wp_footer\',\'blabla\',20000);
function enj() {
    wp_enqueue_script(\'jquery\');
}

function blabla(){
?>
<script type="text/javascript">

    jQuery(document).ready(function($){

        $(\'a#blabla\').click(function(){

            var toSend = {
                action:"hello_hello",
                post_id: "1",
                nonce: "<?php echo esc_js( wp_create_nonce(\'hello\') ); ?>"
            };
            url_action = "<?php echo admin_url(\'/admin-ajax.php\'); ?>";
            $.ajaxSetup({cache:true});
            $.ajax({
                url: url_action,
                type:\'POST\',
                data: toSend,
                cache: false,
                success:function(results) {
                    alert(results)
                }
            });
        });
    });

</script>
    <a href="#" id="blabla">aaa</a>
    <?php
}
已注销和已登录(显然未登录admin logged out,因为没有admin logged out)。

实际上,我不会在真正的代码形式中如此糟糕地使用挂钩,所以不要把我的黑客版本的代码看作是一个很好的示例,因为它不是。。(仅用于说明工作测试代码)。

结束