Javascript 从json创建一个列表将返回[object],并且只返回最后一个li
我正在学习如何使用JSON响应。我希望它显示我的所有6个项目。为什么我只得到最后一个项目和它前面的Javascript 从json创建一个列表将返回[object],并且只返回最后一个li,javascript,jquery,json,Javascript,Jquery,Json,我正在学习如何使用JSON响应。我希望它显示我的所有6个项目。为什么我只得到最后一个项目和它前面的[object] $(文档).ready(函数(){ $(函数(){ $.ajax({ 键入:“GET”, 网址:'https://api.myjson.com/bins/e4ei2', async:false, 数据类型:“json”, 成功:功能(结果){ var项目=”; $.each(结果、函数(索引、val){ 对于(变量i=0;i
[object]
$(文档).ready(函数(){
$(函数(){
$.ajax({
键入:“GET”,
网址:'https://api.myjson.com/bins/e4ei2',
async:false,
数据类型:“json”,
成功:功能(结果){
var项目=”;
$.each(结果、函数(索引、val){
对于(变量i=0;i”+item.stand+”“+item.dishName+”
“+item.dishPrice+”
”;
}
$('ul').html(项目);
});
}
});
});
});代码>首先,删除async:false
设置。这是一种非常糟糕的做法,而且您不需要它,因为您正确地使用了回调
然后,您需要循环查看result.menu
,而不是result
。您还在循环的每个迭代中重新声明项。将其设置为对象的val[i]
。然后,当您尝试将其连接到字符串时,它将被强制为[object object]
,然后您将在输出中看到它
更好的方法是通过菜单进行单循环。然后,您可以在创建HTML字符串时直接访问它的属性。您可以使用map()
实现这一点:
var结果={
“菜单”:[{
“展台”:“布切丽”,
“dishName”:“人造鱼片”,
“价格”:“3,45欧元”
}, {
“展位”:“P–tisserie”,
“dishName”:“Mille feuilles”,
“价格”:“1,10欧元”
}, {
“展位”:“乐泊松酒店”,
“dishName”:“香茅肉片”,
“价格”:“4,60欧元”
}, {
“摊位”:“沙拉吧”,
“dishName”:“潜水员crudités”
}, {
“展台”:“Les Côcottes”,
“dishName”:“Rougail saucisse”,
“价格”:“2,80欧元”
}, {
“摊位”:“小吃”,
“dishName”:“热狗”,
“价格”:“1,89欧元”
}]
};
//在AJAX处理程序中:
var html=result.menu.map(函数(val){
返回“”+val.stand+”“+val.dishName+”
“+val.dishPrice+”
”;
});
$('ul').html(html)代码>
$(文档).ready(函数(){
$.ajax({
键入:“GET”,
网址:'https://api.myjson.com/bins/e4ei2',
async:false,
数据类型:“json”,
成功:功能(结果){
var项目=”;
$.each(结果、函数(索引、val){
对于(var i=0;i”+数据.stand+“”+数据.dishName+”
“+数据.dishPrice+”
”;
}
$('ul').html(项目);
});
}
});
});代码>
从他的小提琴上看是的。事实上,我编辑了我的小提琴,删除了不必要的代码。谢谢你给出了这个非常完整的答案。我会调查的,没问题。下面是一个更新的小提琴链接,显示它正在工作: