2013-04-24 115 views
2

我做了這個web服務來處理我的數據庫函數,這是一個AJAX調用的方法之一。如何瀏覽jQuery中的JSON對象?

$.ajax({ 
     type: "POST", 
     url: "Service/dataBaseService.asmx/getRMAData", 
     data: '{"RMAId": 1 }', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: true, 
     cache: false, 
     success: function (data) { 
      console.log(data); 
      alert(data.RMA_ID); 
     } 
    }); 

這就是記錄:

({d:"[{\"RMA_ID\":1,\"RequestDate\":\"2013-02-28T00:00:00\",\"Company\":1,\"Status\":\"Accepted   \",\"Serial\":201764,\"LastChangeDate\":\"2013-02-28T00:00:00\",\"LastChangeBy\":\"Foreign \",\"Price\":null}]"}) 

然而alert(data.RMA_ID)回報不確定的藏漢作爲data.d.RMA_ID

我該如何獲得這些值?

+0

「(...)'是否真的是響應的一部分?看起來像破碎的JSONP。 – 2013-04-24 11:53:06

回答

6

您記錄的data的值是一個名爲d的屬性的對象,其中包含一個字符串值。您可能可以在服務器端進行調整,將d的值設置爲對象而不是字符串,但是按照當前構建的方式,您可以使用JSON.parse將其解析爲對象。

一旦你做完了,結果對象應該是一個數組,包含一個單一的對象。因此,你要RMA_ID訪問情況如下:

var data = JSON.parse(data.d); 
alert(data[0].RMA_ID); 
+0

+1刪除我的回答,因爲我最初並沒有意識到'd'的值是一個字符串,而不是一個已經分析過的對象。 – 2013-04-24 11:48:45

+0

謝謝大衛,我對此很新穎。我看了一下我的服務器端,並讓它返回對象。 – user629952 2013-04-24 14:51:28

0

使用簡單的JavaScript,你需要分析JSON響應

var resp = eval('(' + data + ')'); 

或直通jQuery的

var resp = jQuery.parseJSON(data); 

現在你可以訪問數據使用'。'和密鑰名稱

console.log(resp.d[0].RMA_ID) 
+1

'eval'被禁止,'JSON.parse'不是真的jQuery和否,'resp.RMA_ID'將不會被定義。 – 2013-04-24 12:34:47

+0

謝謝戴夫,我糾正了我的迴應 – Madhu 2013-04-24 12:41:59