Javascript 为什么我的ajax请求得到响应0?

Javascript 为什么我的ajax请求得到响应0?,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我已经在wp主题中设置了基本的wordpress ajax示例。该触发器是通过modernizr.js检查页面上的媒体查询来实现的 jQuery(document).ready(function($) { if(Modernizr.mq('only all and (max-width:6300px)')) { var data = { action: 'my_action', whatever: ajax_object.we_value

我已经在wp主题中设置了基本的wordpress ajax示例。该触发器是通过modernizr.js检查页面上的媒体查询来实现的

jQuery(document).ready(function($) {
    if(Modernizr.mq('only all and (max-width:6300px)')) {
        var data = {
        action: 'my_action',
        whatever: ajax_object.we_value      // We pass php values differently!
    };
    // We can also pass the url value separately from ajaxurl for front end AJAX implementations
        jQuery.post(ajax_object.ajax_url, data, function(data) {
            $("#trending-Container").html(data).fadeIn(1000);
        });
    }

});//end function 
我已将脚本本地化并排入队列

wp_enqueue_script('mainJS', get_template_directory_uri() . '/js/mainJS.js', array("jquery") );
wp_localize_script( 'mainJS', 'ajax_object', 
                    array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );
最后,处理请求的函数是:

add_action('wp_ajax_my_action', 'my_action_callback');
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
function my_action_callback() {
        global $wpdb;
            $whatever = intval( $_POST['whatever'] );
            $whatever += 10;
                echo $whatever;
            die();

        }
这经常给我一个0(无属性)的响应,我不知道为什么。 这里都是本地的

Status code 200
Host:lart.co.uk
Origin:http://lart.co.uk
Referer:http://lart.co.uk/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36
X-Requested-With:XMLHttpRequest
Form Dataview sourceview URL encoded
action:my_action
whatever:1234

这里的一切都必须匹配:

PHP

添加动作(“wp\u ajax\u我的动作”、“我的动作”); 添加动作(“wp_ajax_nopriv_my_动作”、“my_动作”); 函数my_action(){} JS

风险值数据={ 行动:“我的行动”, 不管什么:ajax\u object.we\u value }; 此外,您还缺少安全检查和更好地处理响应。

检查以下示例:和。

以下是解决此问题的完整示例:

JavaScript:

$(document).ready(function() {
    $("#submit").click(function(e) {
        var demo = 'demo';
        var ajaxurl = '<?php echo admin_url("admin-ajax.php", null); ?>';
        data = { action: "data_insert", demo: demo};     
        $.ajax({
            url: ajaxurl,
            data: data,
            dataType: 'json',
            type: 'post',
            success: function(response) {
              console.log(response);  
            }
        });
    });    
});
add_action('wp_ajax_data_insert', 'data_insert');
add_action('wp_ajax_nopriv_data_insert', 'data_insert');
function data_insert() {
    $data = $_POST['demo'];
    echo json_encode($data);
    die();
}
添加函数的“exit”结尾,如下所示,这将修复返回0,并使用ajax请求在WordPress中进行响应

add_action('wp_ajax_nopriv_getStateList', 'getStateList');
add_action('wp_ajax_getStateList', 'getStateList');

function getStateList() {
    global $wpdb;
    $countryId = $_POST['countryId'];
    $results = $wpdb->get_results("SELECT id,name FROM regions where country_id ='".$countryId."' ");
    echo json_encode(array('status'=>200,'data'=>$results));
    exit;
}

你能检查退出(intval($_POST['whatever'])吗?@RecoveringSince2003您的意思是代替die()?我试过了,但还是一无所获;模具()为确保
$\u POST
不为空,包含值。它仍然为0,我删除了所有的\u action\u callback()函数,它响应为0。函数处理程序不是由add_操作触发的吗?它应该根据您发布的代码触发。仍然是空的。我不认为另一个“my#u action”必须匹配,可能只是函数的名称?示例2非常简单,您是否尝试调整它?啊,谢谢。在看了示例2之后,我能够调整代码并使其正确输出。无论如何,谢谢:)谢谢你的回答。也许你可以添加一些关于这个问题的修改的解释?我已经编辑了评论,你可以在上面看到。仅供参考,这将停止以返回0,并在使用ajax请求时在WordPress中给出响应。
add_action('wp_ajax_data_insert', 'data_insert');
add_action('wp_ajax_nopriv_data_insert', 'data_insert');
function data_insert() {
    $data = $_POST['demo'];
    echo json_encode($data);
    die();
}
add_action('wp_ajax_nopriv_getStateList', 'getStateList');
add_action('wp_ajax_getStateList', 'getStateList');

function getStateList() {
    global $wpdb;
    $countryId = $_POST['countryId'];
    $results = $wpdb->get_results("SELECT id,name FROM regions where country_id ='".$countryId."' ");
    echo json_encode(array('status'=>200,'data'=>$results));
    exit;
}