javascript - 具有不同响应的 Web 服务。响应对象未定义

标签 javascript json web-services

我有一个带有 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/

相关文章:

json - 如何在 JSON Postgres 数据类型列中搜索特定字符串?

.net - 模型和 View 模型应该包含什么?

java - 如何以编程方式动态创建 WSDL 并在没有生成代码或 Java stub 的情况下解析请求?

javascript - 从 vb.net 代码后面运行 JavaScript

x 时重写 JavaScript 原型(prototype)函数

javascript - 当我第二次单击按钮时,我的标签想要消失

sql - 带有要记录的数组的 Json 列

java - 客户端和服务器上的 GWT/Java 中的 JSON 或 YAML 编码

web-services - 从sharepoint获取数据到drupal

javascript - 动态第二个数量增加问题影响第一个数量