我正在使用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"])
,则表示未定义。请告诉我我做错了什么。
答案 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。这应该可以解决问题。