简体   繁体   English

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

[英]Why is my ajax request getting response 0?

I've setup the basic wordpress ajax example in my wp theme. 我在我的wp主题中设置了基本的wordpress ajax示例。 The trigger is made by modernizr.js checking the media queries on the page. 触发器由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 

I have localized and enqueue'd my scripts. 我已经对我的脚本进行了本地化和排队。

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 ) );

and finally the function that handles the request is: 最后处理请求的函数是:

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();

        }

This constantly gives me a response of 0 (no properties) and I do not know why. 这不断给我一个0(没有属性)的响应,我不知道为什么。 PS This is all local. PS这都是本地的。

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

Everything has to match here: 一切都必须在这里匹配:

PHP PHP

add_action('wp_ajax_my_action',        'my_action');
add_action('wp_ajax_nopriv_my_action', 'my_action');

function my_action() {}

JS JS

var data = {
    action: 'my_action',
    whatever: ajax_object.we_value 
};

Also, you're missing security checks and a better handling of the response. 此外,您缺少安全检查并更好地处理响应。
Check this examples: [ 1 ] and [ 2 ] . 检查这个例子: [1][2]

Add the "exit" end of the function as shown below, this will fix the return 0 with the response in WordPress on using the ajax request. 添加函数的“exit”结尾,如下所示,这将使用ajax请求修复返回0以及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;
}

Here is the full example to solve this issue: 以下是解决此问题的完整示例:

JavaScript: 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);  
            }
        });
    });    
});

PHP: PHP:

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();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM