2011-08-16 189 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循環,然後在該外部循環內使用此代碼。