如何从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

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

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

只需设置正确的数据类型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 ,将自己设置正确的数据类型。

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

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

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

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