jQuery AJAX每个循环使用append和html
我希望从以下代码中检索json文件的数据,但问题是,如果我再次按下按钮,我会看到两次结果。 我将每个循环的第一个附加更改为html,但之后只加载了json的最后一个对象。
HTML:
JS:
$("#add-order").click(function(){ $.getJSON('API/orders.json', function(data){ $.each(data, function(i, order){ $("#myorders").append(" id: " + data[i].order.id + " "); $("#myorders").append(" Name: " + data[i].order.name + " "); $("#myorders").append(" Drink: " + data[i].order.drink + " ") }); }); });
数据示例:
[{ "order":{"id": "1", "name": "Bill", "drink": "Capuccino"}}, { "order":{"id": "2", "name": "Sofia", "drink": "Late" }}]
工作小提琴 。
.one() :将处理程序附加到元素的事件。 每个事件类型的每个元素最多执行一次处理程序。
你可以使用JQuery one()
来触发一次点击:
$("#add-order").one("click", function(){ $.getJSON('API/orders.json', function(data){ var my_orders = $("#myorders"); $.each(data, function(i, order){ my_orders.append(" id: " + data[i].order.id + " "); my_orders.append(" Name: " + data[i].order.name + " "); my_orders.append(" Drink: " + data[i].order.drink + " ") }); }); });
注意:您附加了无效的HTML,
标签应该是ul
的直接子项,因此您应该删除p
。
希望这可以帮助。
var data = [{ "order":{"id": "1", "name": "Bill", "drink": "Capuccino"}}, { "order":{"id": "2", "name": "Sofia", "drink": "Late" }}] $("#add-order").one("click", function(){ var my_orders = $("#myorders"); $.each(data, function(i, order){ my_orders.append(" id: " + data[i].order.id + " "); my_orders.append(" Name: " + data[i].order.name + " "); my_orders.append(" Drink: " + data[i].order.drink + " ") }); });
我刚刚发现该解决方案存在问题……如果更改/更新json文件的数据,则必须重新加载页面,因为one()已经使用过一次。