我有以下JSON字符串:
{“name”:“Ruby on Rails棒球 泽西岛“,”价格“:”19.99“,
“ID”: “1025786064”,
“图像”: “http://127.0.0.1:3001/assets/products/4/product/ror_baseball.jpeg” },{“name”:“Ruby on Rails棒球 泽西岛“,”价格“:”19.99“,
“ID”: “1025786064”,
“图像”: “http://127.0.0.1:3001/assets/products/5/product/ror_baseball_back.jpeg” },{“name”:“Ruby on Rails Ringer T恤“,”价格“:”19.99“,
“ID”: “187438981”,
“图像”: “http://127.0.0.1:3001/assets/products/9/product/ror_ringer.jpeg” },{“name”:“Ruby on Rails Ringer T恤“,”价格“:”19.99“,
“ID”: “187438981”,
“图像”: “http://127.0.0.1:3001/assets/products/10/product/ror_ringer_back.jpeg” },{“name”:“Apache Baseball 泽西岛“,”价格“:”19.99“,
“ID”: “706676762”,
“图像”: “http://127.0.0.1:3001/assets/products/1004/product/apache_baseball.png” },{“name”:“Ruby Baseball Jersey”, “price”:“19.99”,“id”:“569012001”, “图像”: “http://127.0.0.1:3001/assets/products/1008/product/ruby_baseball.png” }
然后在jQuery中:
var d = eval("(" + data + ")"); //data is the json string above.
$.each(d, function(idx, item) {
alert(item);
});
没有错误,但它只显示第一个序列的数据。如何遍历所有数据?
谢谢。
答案 0 :(得分:1)
使用eval()
解析JSON是不安全的。尝试使用浏览器本机(不需要库!)函数JSON.parse()
代替,它在所有浏览器中实现并且是安全的。
答案 1 :(得分:1)
答案 2 :(得分:1)
尝试:
var d = eval("[" + data + "]");
JSON数组用方括号括起来,例如:'[1,2,3]'
(是的,不要使用eval
,而是JSON
内置对象或类似的,更安全的解决方案)
答案 3 :(得分:1)
尝试使用[]
包装JSON您可以在此处验证您的JSON:JSONLint Validator,以便了解问题所在。
答案 4 :(得分:1)
首先,请确保从这里使用JSON解析器:https://github.com/douglascrockford/JSON-js/blob/master/json2.js
然后你的代码看起来会像这样:
var myArrayOfObjects = JSON.parse("[" + data + "]");
for (obj in myArrayOfObjects)
{
alert("Name:" + myArrayOfObjects[obj].name);
}
或在Jquery:
$.each(myArrayOfObjects , function(i, o) {
alert("Name:" + o.name);
});