无法处理来自php的json响应

时间:2013-05-20 06:41:43

标签: php javascript jquery json

我正在使用pmxdr库进行跨域调用(jQuery到php并在json中响应)。问题是我无法正确处理响应,但如果我只是在HTML上打印它就是 -

{"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"]),则表示未定义。请告诉我我做错了什么。

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

试试这个:

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

这是因为数据类型是字符串,而不是json

答案 2 :(得分:0)

在响应函数中将其解析为JSON对象,即JSON.parse(string)应该可以工作,我不知道它是否可以在IE中工作,但它适用于chrome和Firefox。这应该可以解决问题。