2013-04-24 73 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