如何从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" }
我想得到参数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
为什么我会得到错误以及如何获得参数?
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" ) ;