如何从json获取参数?

时间:2013-09-27 13:59:21

标签: javascript jquery json

完整代码:

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

为什么我会收到错误以及如何获取参数?

P.S。:所有代码php和jquery找到here

3 个答案:

答案 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" )
;