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

Uzu*_*Dev 12 javascript php ajax wordpress jquery

我在我的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 
Run Code Online (Sandbox Code Playgroud)

我已经对我的脚本进行了本地化和排队.

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 ) );
Run Code Online (Sandbox Code Playgroud)

最后处理请求的函数是:

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

        }
Run Code Online (Sandbox Code Playgroud)

这不断给我一个0(没有属性)的响应,我不知道为什么.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
Run Code Online (Sandbox Code Playgroud)

bra*_*ilo 29

一切都必须在这里匹配:

PHP

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

function my_action() {}

JS

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

此外,您缺少安全检查并更好地处理响应.
检查这个例子:[1][2].


abr*_*rar 5

添加函数的“退出”端,如下所示,这将修复WordPress 中使用 ajax 请求时返回 0的响应。

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 我已经编辑了评论,你可以在上面看到。对于您的仅供参考,这将停止返回 0,并在 WordPress 中使用 ajax 请求进行响应。 (2认同)