Jquery ajax响应错误

时间:2013-07-05 13:14:40

标签: php jquery ajax json

这是我想要实现的部分例子。

我正在尝试从ajax中检索一个值,但是javascript result.success变量是未定义的。我有以下内容:

PHP:

$result = array ("success" => null, "html" => "");
$result['success'] = true;
$result['html'] = "test";
echo json_encode($result);

的Javascript / jQuery的:

var ID = 1
$.ajax({
            type: 'POST',
            url: '/ajax/load.php',
            contentType: "application/json; charset=utf-8",
            datatype: 'json',
            data: {ID: ID},
            beforeSend: function(xhrObj) {
                xhrObj.setRequestHeader("Content-Type","application/json");
                xhrObj.setRequestHeader("Accept","application/json");
            },
            success: function(result) {
                if (result.success) {
                        // do something
                }
        });

我从ajax获取的响应(从chrome dev工具中检索)是{“success”:true,“html”:“Test”}

这对我来说很好,但是在JavaScript result.success中是未定义的。我相信这很简单我只是看不出问题所在。

3 个答案:

答案 0 :(得分:2)

您的错误在这里:

datatype: 'json',

Javascript区分大小写,属性为dataType

dataType: 'json',

因此,jQuery没有被告知自动解析JSON,因此结果只被视为html或纯文本。

您还需要删除内容类型标头,因为它指定了请求未响应的内容类型。您正在发送请求中编码的表单/网址,而不是JSON。

答案 1 :(得分:1)

$.ajax({
            type: 'POST',
            url: '/ajax/load.php',
            contentType: "application/json; charset=utf-8",
            dataType: 'json',
            data: {ID: ID},
            beforeSend: function(xhrObj) {
                xhrObj.setRequestHeader("Content-Type","application/json");
                xhrObj.setRequestHeader("Accept","application/json");
            },
            success: function(result) {
                if (result.success) {
                        // do something
                }
            } // Maybe your forgot this
        });

换句话说 - 基本调试

答案 2 :(得分:0)

在你的PHP页面中将它放在页面顶部(你只接受json响应,但你的响应头内容类型可能是text / html

header('Content-type: application/json');