[英]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.