繁体   English   中英

jQuery Ajax响应错误

[英]Jquery ajax response error

这是我要实现的目标的部分示例。

我正在尝试从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中是未定义的。 我相信这很简单,我只是看不出问题所在。

您的错误在这里:

datatype: 'json',

Javascript区分大小写,属性为dataType

dataType: 'json',

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

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

$.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
        });

换句话说-基本调试

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

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

暂无
暂无

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

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