0

完整代码:

$.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"
}

我想获取参数serverphoto[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

为什么我会出错以及如何获取参数?

PS:所有代码 php 和 jquery 在这里找到

4

3 回答 3

0

您可以使用parseJSON由 jQuery 公开的方法。这使您能够将属性映射到某种类型,例如:

var results = jQuery.parseJSON(jsonData);
for (int i = 0; i < results.length; i++) {
    alert(results[i].name + ":" + results[i].date);
}

您可能需要根据您的数据和要求调整输入和输出的精确使用。

于 2013-09-27T14:04:33.207 回答
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将自己设置正确的数据类型。

于 2013-09-27T14:21:25.090 回答
-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" )
;
于 2013-09-27T14:08:31.780 回答