2013-05-20 116 views
0
json響應

我使用pmxdr庫進行跨域調用(jQuery到php並在json中響應)。問題是我不能正確處理響應,但如果我只是將它打印在HTML的當屬 -無法處理從php

{"title":"Mr","first_name":"Shak","last_name":"Mana"} 

下面是它的代碼我得到上面提到的控制檯上使用

pmxdr.request({ 
uri  : "http://xxxx/pmxdr/respons1.php", 
callback: handleResponse 
}); 

function handleResponse(response) { 
if (!response.error) { // request successful 
    console.log(response.headers["content-type"]) //works 
    console.log(response.data) //works 

    for (var key in response.data) { 
    alert(response.data[key]); // gives each character :(
} 
} else print("Error: " + response.error); 
} 

JSON,但在警報中,我將每個字符分開彈出。如果我使用console.log(response.data["title"])它說未定義。請告訴我我做錯了什麼。

+0

您的'response.data'是一個字符串。 [解析你的'response.data'到json](http://stackoverflow.com/q/4935632/155813)。 – mg007

+0

document.write(JSON.stringify(response.data)); –

回答

0

試試這個:

var data = JSON.parse(response.data); 

這是因爲數據的類型爲字符串,而不是JSON

+0

非常感謝你karaxuna。我是新來的Java腳本。 – chaky

+0

歡迎您:)我不知道它是什麼類型的對象 - > pmxdr.request,但它必須有一個選項,您可以在其中寫入響應數據類型必須爲json(如Wings Of Fire建議)。然後你可以處理數據,而不需要解析爲json,這更加舒適:) – karaxuna

1

這是因爲,你得到一個字符串作爲迴應,而不是一個JSON對象。你可以做的一件事是,將ajax數據類型設爲json。

dataType : json 

或者你可以在客戶端使字符串作爲json對象。您可以使用該parseJSON方法,

function handleResponse(response) { 
response=$.parseJSON(response); 
if (!response.error) { // request successful 
console.log(response.headers["content-type"]) //works 
console.log(response.data) //works 

for (var key in response.data) { 
alert(response.data[key]); // gives each character :(
} 
} else print("Error: " + response.error); 
} 
0

在響應函數解析成JSON對象,即JSON.parse(串)應該工作,我不知道是否會在IE瀏覽器,但它適用於Chrome和Firefox。這應該可以做到這一點。

+0

謝謝..這工作。 – chaky