我将代码简化为一个非常简单的脚本,这让我发疯,它不起作用。
这个想法是通过Webservice获取JSON字符串,然后显示数据。是的,这似乎是一件非常简单的事情......
JSON 字符串有效:
[
{
"FileName": "Test1",
"GuestRating": 7.09,
"ID": 1066113,
"Image": "A110897780.jpg",
"Latitude": 35.534599,
"Longitude": 121.759896,
"Name": "Test 1",
"NumberOfReviews": 317,
"Rate": 19.19,
"StarRating": 4,
"UpdatedDate": "2012-11-09T16:48:27.65",
"UpdatedBy": "test"
},
{
"FileName": "Test 2",
"GuestRating": 8.03,
"ID": 1066110,
"Image": "A110563463.jpg",
"Latitude": 31.432816,
"Longitude": 122.53242,
"Name": "Test 2",
"NumberOfReviews": 164,
"Rate": 27.92,
"StarRating": 4,
"UpdatedDate": "2012-04-26T10:46:34.403",
"UpdatedBy": "test"
}
]
我的 JavaScript:
<script src="Scripts/jquery-2.0.3.min.js"></script>
<script>
$(document).ready(function () {
$.getJSON('api/hotels')
.done(function (data) {
alert(data)
var items = [];
$.each(data, function (key, val) {
alert('11111');
items.push("<li id='" + key + "'>" + val + "</li>");
});
alert('2222');
$("<ul/>", {
"class": "my-new-list",
html: items.join("")
}).appendTo("body");
})
.error(function () {
alert('error');
});
});
</script>
它主要是从他们网站上的 jQuery 示例复制的。 第一个警报起作用并显示 JSON 数据。 然后它似乎就死了。不再有警报。 Chrome的Javascript控制台显示以下语句:
Uncaught TypeError: Cannot use 'in' operator to search for '1525' in
后跟我的 JSON 字符串。我不知道这意味着什么。
感谢任何人的提示!
最佳答案
使用包含 $.each(data, function (key, val) {
的 JSON,不会像 FileName
那样返回 keys
。为什么?因为 each
迭代数组,每次都会返回一个索引和一个完整的对象。
$.each(data, function (idx, obj) {
$.each(obj, function(key, val) {
...
关于javascript - getJSON 并使用 $.each 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21507386/