简单jquery.ajax返回未定义的

简单jquery.ajax返回未定义的,jquery,ajax,wordpress,undefined,Jquery,Ajax,Wordpress,Undefined,我知道它们无处不在,但我似乎看不到代码中的错误。我正在使用数据类型json进行一个简单的ajax调用。此调用似乎成功,但不返回任何内容,警报将打印未定义的 javascript: jQuery(document).ready(function() { if(jQuery('#statesel').length) { var dataString; dataString = "nonce=" + dynoselect.post_dyno_select_no

我知道它们无处不在,但我似乎看不到代码中的错误。我正在使用数据类型json进行一个简单的ajax调用。此调用似乎成功,但不返回任何内容,警报将打印未定义的

javascript:

jQuery(document).ready(function() {
    if(jQuery('#statesel').length) {
        var dataString;

        dataString = "nonce=" + dynoselect.post_dyno_select_nonce;
        jQuery.ajax({
            type: "POST",
            url: dynoselect.ajaxurl,
            dataType: "json",
            data: dataString,
            success: function(result) {
                alert(result.status);
            }
        });
    }
}
php:



注意,这是用Wordpress完成的,因此使用了
init
函数。我想我会好好考虑一下。

jQuery.ajax
有3个参数用于
成功
回调。第一个是具有指定类型的数据(示例中为JSON)。所以它没有状态属性

此外,当您收到成功警报时,这意味着
内容类型
已正确设置,并且是有效的JSON对象

尝试使用:

success: function(result, status, XHR) {
     alert(XHR.status);
}

这个JSON参数字符串看起来不起作用。呼叫是否正确地发送到服务器

如果是,忽略这一点

如果没有,我建议在调用jQuery.ajax之前包括json2.js()并对数据参数进行字符串化:

var jsonData = { param1: 'something', param2: 999 };
var dataString = JSON.stringify(jsonData);
编辑:
本文中的示例没有字符串化,但它确实构造并传递了一个有效的JSON对象。并显示服务器端解析。

问题在于POST没有在ajax调用中传递“操作”。一旦将“action”添加到url中,一切都正常了。

您可能需要在PHP中设置
内容类型
标题:
标题('Content-type:application/json')
我建议您打开chrome inspector(
ctrl+I
Mac+I
)并转到网络选项卡。然后查看XHR请求,您可以检查AJAX调用的返回结果。你真的得到数据了吗?您定义了几个函数,但我没有看到任何实际执行的代码(除非它在
init
中)。hall.stephenk:我在php中的dyno\u select函数前面添加了内容类型,没有任何更改。约翰:我去了督察室的“网络”。有一个admin-ajax.php,包含各种信息,但它确实显示status:OK,响应子选项卡显示:0。我不确定要在这些选项卡中查看什么。Omid:received 200 status back。@deadpickle那么你期望什么呢?我想我期望结果包含来自ajax调用的数据,但事实并非如此。不完全确定200是什么意思,但Inspector显示admin-ajax.php是可以的。我给了您的stringify示例一次尝试,但仍然得到未定义的返回。
var jsonData = { param1: 'something', param2: 999 };
var dataString = JSON.stringify(jsonData);