下面给出的jQuery代码对我不起作用。问题似乎是alert(orders);
,因为当我尝试$mapinfo.append(orders);
或SCRIPT5007: Invalid operand to 'in': Object expected
而不是循环时,它会打印所有数据并且工作正常但在循环内部会出现错误说:< / p>
jquery-1.12.0.min.js (2,4211)
内
success: function(orders){
$.each(orders, function(i, order){
$mapinfo.append('<li>'+ order.type +'</li>');
});
}
。但是我想让它为我项目的下一步分别获取所有信息。
orders
这里是[{"id":"1","lat":"26.260012","lon":"50.615517","type":"Restaurant "},{"id":"2","lat":"26.261667","lon":"50.613792","type":"supermarket"},{"id":"3","lat":"26.260464","lon":"50.612705","type":"Restaurant "},{"id":"4","lat":"26.259348","lon":"50.613049","type":"supermarket"}]?>
jQuery.each()
我试过写$(orders).each()
和$.each
,但我总是得到同样的错误。
EDIT1:
在orders
处放置一个断点后,orders "[{\"id\":\"1\",\"lat\":\"26.260012\",\"lon\":\"50.615517\",\"type\":\"Restaurant \"},{\"id\":\"2\",\"lat\":\"26.261667\",\"lon\":\"50.613792\",\"type\":\"supermarket\"},{\"id\":\"3\",\"lat\":\"26.260464\",\"lon\":\"50.612705\",\"type\":\"Restaurant \"},{\"id\":\"4\",\"lat\":\"26.259348\",\"lon\":\"50.613049\",\"type\":\"supermarket\"}]?>"
..
var startDate = new Date('2015-11-01'), endDate = new Date('2015-12-01');
db.data.aggregate([
{$match: { datetime: {$gt: startDate, $lt: endDate}}},
{ $group : {
_id : { month: {$month: '$datetime'}, day:{$dayOfMonth: '$datetime'}},
count: { $sum : 1 }
}},
{ $sort : { "_id.day" : 1 }}
]);
答案 0 :(得分:2)
您的编辑告诉我们,当您收到orders
时,它仍然是一个字符串。如果您使用正确的Content-Type
(application/json
)来提供JSON,那么jQuery将在调用您的回调之前解析JSON,这是最好的,或者如果您通过使用dataType: "json"
告诉jQuery期望JSON回来你的ajax请求。
在你的情况下,看起来没有发生这种情况,因为在数组结束]
之后,JSON右边的错误是正确的:
&GT;
JSON在其他方面是有效的,只是看起来像生成JSON的PHP文件中的错误。纠正这一点,jQuery可能会在给你之前解析字符串;如果没有,请添加Content-Type
(或添加dataType: "json"
)。