我将代码清理成一个非常简单的脚本,它让我疯了,它不起作用。
我们的想法是通过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字符串。我不知道这意味着什么。
感谢任何有提示的人!
答案 0 :(得分:1)
使用包含$.each(data, function (key, val) {
的JSON不会返回keys
之类的FileName
。为什么?因为each
遍历数组,每次都会返回一个索引和一个完整的对象。
$.each(data, function (idx, obj) {
$.each(obj, function(key, val) {
...