我有一个带有 JSON 响应的网络服务。当我这样调用服务时:
$.ajax({
url: "https://myServiceURL/myService/" + ItemID,
type: 'GET',
contentType: "application/json",
dataType: "json",
success: function (data) {
console.log(data.myField);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("Error : " + errorThrown);
}
});
这很好用。但是当我按名称过滤时(像这样):
$.ajax({
url: "https://myServiceURL/myService?$filter=Name eq 'Chubaka'",
type: 'GET',
contentType: "application/json",
dataType: "json",
success: function (data) {
console.log(data.myField);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("Error : " + errorThrown);
}
});
我无法获取数据。数据的数据类型是(对象对象)。但是当我想从 data.myField 获取值时,它是未定义的。
我用Fiddler检查了响应,两个答案都有结果。我在原始格式中看到的唯一区别是:
1 个响应:{"Name": "Chubaka"...}
2 响应:[{"Name": "Chubaka"....}]
差异在哪里,如何从第二个响应中获取值?
最佳答案
在第二个响应中,您会得到数组,因此您必须这样做
data[0].Name
当你得到数组时,你必须进行交互才能得到结果。就像您的情况一样,有两个不同的调用,因此您可以假设两个结果都是不同的类型。第一个结果返回单个对象,第二个结果返回对象数组。 你可以这样做。
if($.isArray(data))
{
for(var i=0;i<data.length;i++)
console.log(data[0].field)
}
关于javascript - 具有不同响应的 Web 服务。响应对象未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27486523/