2011-08-16 24 views
43

JSs sonucunu webservice'den almak için aşağıdaki kodu yazdım. İşteJSON Anahtar ve Değer nasıl edinilir?

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.. 
        } 
      }); 
     } 

webservice gelen yanıttır: enter image description here

beni Anahtar yazdırmak için yardım edin ve onu bir dizi geri alıyoruz gibi görünüyor Değer

cevap

88

bu. her zaman sadece bir öğeden olacak ise, (evet, hemen hemen Tomalak cevabı olarak aynı şey) yapabilirsiniz:

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

Birden fazla eleman olabilir ve isterseniz Eğer yuva $.each() olabilir, hepsinin üzerinde yineleme:

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

FWIW, ilk snippet'inizin sonunda kapanış parantezini kaçırıyorsunuz. – BWDesign

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

Ancak bu sadece görüntülenecek ** 0: [object Object] ** – imdadhusen

+1

@imdadhusen Tarayıcıya bakarak JS geliştirici araçları/hata ayıklayıcı bir süre içinde iyi bir fikir olabilir. ;) – Tomalak

10

Birincisi, bir açık $.parseJSON() kullandığınız görülüyor. Bu, sunucu tarafında JSON'u manuel olarak sıraladığınızdan, yapma. ASP.NET will automatically JSON-serialize your method's return value ve jQuery sizin için otomatik olarak seri hale getirecektir.

orada var dizideki ilk öğe, böyle bir kod kullanın yinelemenize için: Birden fazla eleman var ise

var firstItem = response.d[0]; 

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

(o ekran görüntüsünden söylemek zor), sonra yapabilirsiniz response.d üzerinde döngü ve sonra bu kodu bu dış döngü içinde kullanın.

İlgili konular