0

我正在使用 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"])它说未定义。请告诉我我做错了什么。

4

3 回答 3

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);
}
于 2013-05-20T06:47:37.953 回答
0

尝试这个:

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

发生这种情况是因为数据类型是字符串,而不是 json

于 2013-05-20T06:47:03.920 回答
0

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

于 2013-05-20T06:49:40.950 回答