完整代码:
$.post('test.php', {
id: id
},function (data) {
console.log(data);
var Server = data.response.server;
var Photo = data.response.photo;
console.log(Server);
console.log(Photo);
});
在data
我得到了json:
{
"server":9458,
"photo":
"[{\"photo\":\"0d6a293fad:x\",\"sizes\":
[[\"s\",\"9458927\",\"1cb7\",\"PX_xDNKIyYY\",75,64],
[\"m\",\"9458927\",\"1cb8\",\"GvDZr0Mg5zs\",130,111],
[\"x\",\"9458927\",\"1cb9\",\"sRb1abTcecY\",420,360],
[\"o\",\"9458927\",\"1cba\",\"J0WLr9heJ64\",130,111],
[\"p\",\"9458927\",\"1cbb\",\"yb3kCdI-Mlw\",200,171],
[\"q\",\"9458927\",\"1cbc\",\"XiS0fMy-QqI\",320,274],
[\"r\",\"9458927\",\"1cbd\",\"pU4VFIPRU0k\",420,360]],
\"kid\":\"7bf1820e725a4a9baea4db56472d76b4\"}]",
"hash":"f030356e0d096078dfe11b706289b80a"
}
我想获取参数server
和photo[photo]
为此我使用:
var Server = data.server;
var Photo = data.photo;
console.log(Server);
console.log(Photo);
但是在concole中我得到undefined
比我使用代码:
var Server = data.response.server;
var Photo = data.response.photo;
console.log(Server);
console.log(Photo);
但现在在控制台中我看到了:
Uncaught TypeError: Cannot read property 'server' of undefined
为什么我会收到错误以及如何获取参数?
P.S。:所有代码php和jquery找到here
答案 0 :(得分:0)
您可以使用jQuery公开的parseJSON
方法。这使您可以将属性映射到各种类型,例如:
var results = jQuery.parseJSON(jsonData);
for (int i = 0; i < results.length; i++) {
alert(results[i].name + ":" + results[i].date);
}
您可能需要根据数据和要求调整输入和输出的确切使用。
答案 1 :(得分:0)
只需设置正确的数据类型json
,默认数据类型为string
。
您的数据直接位于data
变量!
$.post('test.php', {
id: id
},function (data) {
console.log(data);
var Server = data.server;
var Photo = data.photo;
console.log(Server);
console.log(Photo);
}, 'json');
另一种解决方案是在PHP响应中设置正确的标头:
Content-Type text/javascript; charset=UTF-8
然后jQuery Intelligent Guess
,将自己设置正确的数据类型。
答案 2 :(得分:-1)
getJSON()将在获取后为您解析JSON,因此从那时起,您正在使用一个简单的Javascript数组([]标记JSON中的数组)。
您可以使用for循环获取数组中的所有值:
$.getJSON("url_with_json_here", function(data){
for (var i=0, len=data.length; i < len; i++) {
console.log(data[i]);
}
});
另一个例子:
解析JSON字符串。
var obj = jQuery.parseJSON( '{ "name": "John" }' );
alert( obj.name === "John" )
;