AJAX function returning -1

时间:2011-07-18 作者:Odyss3us

我最近为我的网站开发了一个使用AJAX的小插件,现在我正试图为同一个网站的模板实现相同的AJAX技术,但我不断得到-1 因此,这是我的代码,

功能。php:

    //Front end AJAX functions

    function eu_custom_query(){
        global $post;
        global $wpdb;

        echo "yo";

        die();
    }

function enque_template_scripts() {

    wp_deregister_script( \'jquery\' );
    wp_register_script( \'jquery\', \'http://code.jquery.com/jquery-1.6.2.js\');
    wp_enqueue_script( \'jquery\' );


    // embed the javascript file that makes the AJAX request
    wp_register_script( \'scripts.js\', get_bloginfo(\'template_directory\').\'/scripts/scripts.js\');
    wp_enqueue_script( \'scripts.js\' );

    // declare the URL to the file that handles the AJAX request (wp-admin/admin-ajax.php)
    wp_localize_script( \'scripts.js\', \'wp_ajax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) ); 

}    


    add_action(\'wp_ajax_custom_query\', \'eu_custom_query\');
    add_action(\'wp_ajax_nopriv_custom_query\', \'eu_custom_query\');
    add_action(\'get_header\', \'enque_template_scripts\');
脚本。js公司:

$(document).ready(function(){
    $("#do_ajax").click(function(){
            $.post(wp_ajax.ajaxurl, { action: \'eu_custom_query\' }, function(data){
                alert(data);
            });
    });
});
我正在使用Wordpress版本3.2.1

你知道我做错了什么吗?

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

您正在将“eu\\u custom\\u query”作为AJAX中的操作传递。它应该是“custom\\u query”。

您决定操作名称,当您添加操作时,即“wp\\u ajax\\u my\\u action”将被称为“my\\u action”

您将其与回调方法混淆。希望这是有意义的。

p、 要修复代码更改,请执行以下操作:

add_action(\'wp_ajax_custom_query\', \'eu_custom_query\');
add_action(\'wp_ajax_nopriv_custom_query\', \'eu_custom_query\');
收件人:

add_action(\'wp_ajax_eu_custom_query\', \'eu_custom_query\');
add_action(\'wp_ajax_nopriv_eu_custom_query\', \'eu_custom_query\');

SO网友:Chip Bennett

我看到两个问题:

noConflict

WordPressrequires noConflict wrappers for jQuery. 因此:

$(document).ready(function(){
。。。需要这样做:

jQuery(document).ready(function($) {
。。。因此$ 将在功能内部正常工作。

Blanket replacement of core-bundled script

此外,您正在赤裸裸地替换核心捆绑jQuery,这是您永远不应该做的,否则您将有破坏WP Admin后端的风险。

任何此类代码must 包裹在if ( ! is_admin() ) 有条件的:

if ( ! is_admin() ) {
    wp_deregister_script( \'jquery\' );
    wp_register_script( \'jquery\', \'http://code.jquery.com/jquery-1.6.2.js\');
    wp_enqueue_script( \'jquery\' );
}

结束

相关推荐

Ajax function returns -1

我有个问题。我制作了一个简单的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 r