2013-05-20 51 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