2011-08-16 36 views
43

Tôi đã viết mã sau để nhận kết quả JSON từ webservice.Làm cách nào để lấy khóa và giá trị 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.. 
        } 
      }); 
     } 

Đây là phản hồi từ webservice: enter image description here

Xin hãy giúp tôi để in Key và nó là giá trị gia tăng

Trả lời

88

Dường như bạn đang nhận lại một mảng. Nếu nó luôn luôn bao gồm chỉ một yếu tố, bạn có thể làm điều này (có, nó khá nhiều điều tương tự như câu trả lời của Tomalak):

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

Nếu bạn có thể có nhiều hơn một phần tử và bạn muốn lặp qua tất cả, bạn có thể tổ $.each():

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

FWIW, bạn đang thiếu dấu ngoặc đơn đóng ở cuối đoạn mã đầu tiên của mình. – BWDesign

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

nhưng điều này sẽ chỉ hiển thị ** 0: [đối tượng đối tượng] ** – imdadhusen

+1

@imdadhusen Nhìn vào công cụ/trình gỡ lỗi của trình duyệt JS trình duyệt có thể là một ý tưởng tốt một lần trong một thời gian. ;) – Tomalak

10

Trước tiên, tôi thấy bạn đang sử dụng rõ ràng $.parseJSON(). Nếu đó là vì bạn đang tuần tự hóa JSON ở phía máy chủ, thì không. ASP.NET will automatically JSON-serialize your method's return value và jQuery sẽ tự động deserialize nó cho bạn quá.

Để lặp qua mục đầu tiên trong mảng bạn đã có ở đó, mã sử dụng như thế này:

var firstItem = response.d[0]; 

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

Nếu có nhiều hơn một mục (thật khó để nói từ ảnh chụp màn hình), sau đó bạn có thể lặp lại trên response.d và sau đó sử dụng mã này bên trong vòng lặp ngoài đó.

Các vấn đề liên quan