jQuery AJAX each loop using append and html
我想从以下代码中检索json文件的数据,但问题是,如果再次按下按钮,则会看到两倍的结果。 我将每个循环的第一个附加项更改为html,但是仅加载了json的最后一个对象。
HTML:
1 2 3 4 | <ul id="myorders"> </ul> <button type="button" id="add-order">Load the orders</button> |
JS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | $("#add-order").click(function(){ $.getJSON('API/orders.json', function(data){ $.each(data, function(i, order){ $("#myorders").append("<p> <li> id:" + data[i].order.id +" </li> "); $("#myorders").append(" <li> Name:" + data[i].order.name +" </li> "); $("#myorders").append(" <li> Drink:" + data[i].order.drink +" </li> </p>") }); }); }); |
数据示例:
1 2 3 4 5 6 7 8 9 | [{"order":{"id":"1", "name":"Bill", "drink":"Capuccino"}}, {"order":{"id":"2", "name":"Sofia", "drink":"Late" }}] |
工作提琴。
.one() : Attach a handler to an event for the elements. The handler is executed at most once per element per event type.
您可以使用JQuery
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $("#add-order").one("click", function(){ $.getJSON('API/orders.json', function(data){ var my_orders = $("#myorders"); $.each(data, function(i, order){ my_orders.append(" <li> id:" + data[i].order.id +" </li> "); my_orders.append(" <li> Name:" + data[i].order.name +" </li> "); my_orders.append(" <li> Drink:" + data[i].order.drink +" </li> ") }); }); }); |
注意:您追加无效的HTML,
希望这可以帮助。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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(" <li> id:" + data[i].order.id +" </li> "); my_orders.append(" <li> Name:" + data[i].order.name +" </li> "); my_orders.append(" <li> Drink:" + data[i].order.drink +" </li> ") }); }); |
1 2 3 4 5 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> <ul id="myorders"> </ul> <button type="button" id="add-order">Load the orders</button> |
我刚刚发现该解决方案有问题...如果您更改/更新json文件的数据,则必须重新加载页面,因为one()已经使用过一次。