2011-08-16 149 views
43

我已经编写了下面的代码来从webservice获取JSON结果。如何获取JSON密钥和值?

function SaveUploadedDataInDB(fileName) { 
      $.ajax({ 
       type: "POST", 
       url: "SaveData.asmx/SaveFileData", 
       data: "{'FileName':'" + fileName + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (response) { 
        var result = jQuery.parseJSON(response.d); 
        //I would like to print KEY and VALUE here.. for example 
        console.log(key+ ':' + value) 
        //Addess : D-14 and so on.. 
        } 
      }); 
     } 

下面是从web服务响应: enter image description here

请帮我打印键,它的价值

回答

88

它看起来像你得到回一个数组。如果它总是要包含一个元素,你可以这样做(是的,这几乎是同样的事情托默勒格的答案):

$.each(result[0], function(key, value){ 
    console.log(key, value); 
}); 

如果你可能有一个以上的元素,你想遍历所有这些,你可以窝$.each()

$.each(result, function(key, value){ 
    $.each(value, function(key, value){ 
     console.log(key, value); 
    }); 
}); 
+0

FWIW,您在第一个片段末尾缺少右括号。 – BWDesign

11
$.each(result, function(key, value) { 
    console.log(key+ ':' + value); 
}); 
+1

但这只会显示** 0:[对象对象] ** – imdadhusen

+1

@imdadhusen看一下浏览器JS开发工具/调试器可能是一个不错的主意。 ;) – Tomalak

10

首先,我看到你使用一个明确的$.parseJSON()。如果这是因为您在服务器端手动序列化JSON,则不要。 ASP.NET will automatically JSON-serialize your method's return value,jQuery也会为你自动反序列化它。

要通过阵列中的第一项你到了那里,用这样的代码进行迭代:

var firstItem = response.d[0]; 

for(key in firstItem) { 
    console.log(key + ':' + firstItem[key]); 
} 

如果有多个项目(这是很难从截图中察觉),那么你就可以通过response.d循环,然后在该外部循环内使用此代码。