当AJAX触发时不运行WP_AJAX操作

时间:2015-11-08 作者:Pond Pisutaarnon

我试图在wordpress世界中实现ajax,但现在被卡住了。假设在未触发ajax时调用函数挂钩。

我检查网络

管理ajax。php被调用,但响应为null意味着未调用getsomething函数

下面是我的代码。

功能。php

function my_resource() {
    wp_enqueue_script(\'my-jquery\',get_template_directory_uri().\'/jqfunctions.js\');
    wp_localize_script( \'my-jquery\', \'myback\', 
    array(\'ajax_url\' => admin_url( \'admin-ajax.php\' )));
}
add_action(\'wp_enqueue_scripts\', \'my_resource\');
JQ功能。js公司

jQuery(document).ready(function(){
jQuery("#popular").click(function(){
    console.log(\'popular clicked\');
        jQuery.ajax({
        url: myback.ajax_url,
        type: \'POST\',
        dataType: \'json\',
        data:{
            action: \'getsomething\'
        },
        success: function( response ){
            console.log("This is response...");
            console.log(response);
        },
        error: function( error ){
            console.log(\'AJAX error callback....\');
            console.log(error);
        }
       });
    });
});
管理ajax。php

 function getsomething(){
 wp_send_json_error(\'hey\');
 }


 add_action(\'wp_ajax_nopriv_getsomething\', \'getsomething\');
 add_action(\'wp_ajax_getsomething\', \'getsomething\');

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

我已经测试了你的代码,它运行得很好。我刚刚声明了JavaScript的依赖项,因此它在jQuery之后被正确加载。我就是这样测试的:

functions.php

function my_resource() {
    wp_enqueue_script(\'my-jquery\',get_template_directory_uri().\'/jqfunctions.js\', array(\'jquery\'));
    wp_localize_script( \'my-jquery\', \'myback\', 
    array(\'ajax_url\' => admin_url( \'admin-ajax.php\' )));
}
add_action(\'wp_enqueue_scripts\', \'my_resource\');
function getsomething(){
  wp_send_json_error(\'hey\');
}
add_action(\'wp_ajax_nopriv_getsomething\', \'getsomething\');
add_action(\'wp_ajax_getsomething\', \'getsomething\');

jqfunctions.js

jQuery(document).ready(function(){
jQuery("#popular").click(function(e){
    e.preventDefault();
    console.log(\'popular clicked\');
    jQuery.ajax({
        url: myback.ajax_url,
        type: \'POST\',
        dataType: \'json\',
        data:{
            action: \'getsomething\'
        },
        success: function( response ){
            console.log("This is response...");
            console.log(response);
        },
        error: function( error ){
            console.log(\'AJAX error callback....\');
            console.log(error);
        }
       });
    });
});

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct