json查询响应值显示未定义

时间:2014-03-08 12:13:08

标签: javascript json odata sapui5

我正在使用ODATA service从表中获取结果dataset。我在JSON format中获取数据,如下所示。

$.getJSON("../TEST_ODATA3.xsodata/COMPAREDATA?$format=json&$select=WERT&$filter=LIFNR eq '"+supplier+"' and ARTIKEL eq '"+artikel+"' and STOREID eq '"+storeId+"' and BUSINESS_DATE eq datetime'"+date_time+"'",
                                    function(response){
                                for (i = 0; i < response.d.results.length; i++) {
                                    console.log(response.WERT);}});

一切正常。但是,当我尝试从响应中访问列名WERT时,我在浏览器控制台中将值undefined。但是当我在浏览器上复制包含host and port的相同链接时,我会看到列名和响应中的值。 任何人都可以告诉我上面代码中缺少的内容。我也试过console.log(response.d.results.WERT);

更新:响应如下:

{
d: {
results: [
{
__metadata: {
uri: "host:port/TEST_ODATA3.xsodata/COMPAREDATA('1')",
type: "TEST_ODATA3.COMPAREDATAType"
},
WERT: "35.26"
}
]
}
}

3 个答案:

答案 0 :(得分:2)

results是根据你的json的数组。您可以像这样访问它

  response.d.results[0].WERT

答案 1 :(得分:1)

干净的缩进会告诉你问题。 您的对象WERT位于d.results数组中,您必须通过response.d.results[0].WERT

访问它

答案 2 :(得分:1)

对于循环,我更喜欢每个都使用jQuery:

$.getJSON("../TEST_ODATA3.xsodata/COMPAREDATA?$format=json&$select=WERT"+
    "&$filter=LIFNR eq '"+supplier+
    "' and ARTIKEL eq '"+artikel+
    "' and STOREID eq '"+storeId+
    "' and BUSINESS_DATE eq datetime'"+date_time+"'",
    function(response){
        $.sap.each(response.d.results, function(i, oItem){
            console.log(oItem.WERT);
        });
    });