我想检索houseType
,这是使用ajax的api调用。 Console.log
只有result
可以,但其他人则显示undefined
。我不知道为什么会这样。
$.ajax({
url: 'http://api/get.php',
type: 'GET',
crossDomain: true,
datatype:'json',
data:{
HouseNo: 2001
},
success: function(result) {
console.log(result);
console.log(result.error);
console.log(result.houses);
console.log(result.houses.houseType);
if (result.error == false) {
window.location.href = "viewHouses.php"
}
},
error: function(result) {
alert("Error");
}
});
控制台日志result
是
{"error":false,"houses":[{"houseType":"Mansion"}]}
但result.error
和result.houses
的日志为undefined
。我错过了什么?
答案 0 :(得分:0)
正如jquery docs所述:
" json":将响应评估为JSON并返回JavaScript 宾语。跨域" json"请求转换为" jsonp"除非 请求在其请求选项中包含jsonp:false。 JSON 数据以严格的方式解析;任何格式错误的JSON都被拒绝了 抛出了一个解析错误。
如果您使用跨源请求请求数据,则选项应具有jsonp: false
值:
$.ajax({
url: 'http://api/get.php',
type: 'GET',
crossDomain: true,
datatype:'json',
jsonp: false,
data:{
HouseNo: 2001
},
success: function(result) {
// ...
},
error: function(result) {
// ...
}
});
对我来说,这看起来像是你真正记录了某种类型的JSON(P)字符串。如果上述方法无效,请尝试使用以下内容解析result
try {
var parsed = JSON.parse(result);
console.log(parsed);
} catch(err) { console.log(err); }
我很好奇这个片段会记录什么。