2012-02-07 63 views
0

我想從使用javascript/jquery的服務器解析JSON響應。這是字符串:使用javascript解析JSON

{ 
"status": { 
    "http_code": 200 
}, 
"contents": "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\nDate: Tue, 07 Feb 2012 08:14:38 GMT\r\nServer: localhost\r\n\r\n {\"response\": \"true\"} " 
} 

我需要獲得response值。

以下是我在我的崗位查詢成功功能正在嘗試:

  success: function(data) { 
      var objstring = JSON.stringify(data); 
      var result = jQuery.parseJSON(JSON.stringify(data)); 
      alert(objstring); 

      var result1 = jQuery.parseJSON(JSON.stringify(result.contents[0])); 
      alert(result1.response); 

      alert(data.contents[0].response); 

但到目前爲止,沒有什麼我試圖返回正確的結果」我不斷收到undefined,然而objstring內容是正確的幷包含JSON字符串。

+0

你有在多個瀏覽器測試這一點,仍然收到同樣的「未定義」字符串? – James 2012-02-07 08:46:35

回答

2

好像JSON響應本身含有JSON內容。根據您調用jQuery.post()方法的方式,您將獲得一個字符串或一個JSON對象。對於第一種情況,使用jQuery.parseJSON()將字符串轉換成JSON對象:

data = jQuery.parseJSON(theAboveMentionedJsonAsString); 

接下來,讓contents物業內所有第一\r\n\r\n後:

var contentBody = data.contents.split("\r\n\r\n", 2)[1]; 

最後,轉換該字符串JSON並獲得所需的值:

var response = jQuery.parseJSON(contentBody).response; 
// "true" 
4

首先,將dataType設置爲json。然後data將包含指定數據的對象:

dataType: 'json', 
success: function(data) { 
    alert(data.status.http_code); 
    alert(data.contents); 
} 

the API要了解這些特性實現更多的解釋。它也可能幫助您使用Javascript控制檯,因此您可以使用console.log,這是一個比alert更強大的工具。

+0

這不會幫助獲取響應值,轉義代碼是否阻止我閱讀它。這是行不通的:data.contents.response – danielbeard 2012-02-07 08:38:27

+0

@danielbeard我沒有看到。我的天哪,這是一個荒謬的API。 – lonesomeday 2012-02-07 09:24:31

0

試試這樣說:

var objstring=JSON.stringify(data); 
var result=JSON.parse(objstring); 

alert("http code:" + result.status.http_code); 
alert("contents:" + result.contents);