2011-08-16 20 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

ですしてください。常にただ一つの要素から成るように起こっている場合、あなたは(はい、それはかなりTomalakの答えと同じことだ)これを行うことができます:

$.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以上にして、このコードをその外側のループの内部で使用します。

関連する問題