ajax仅输出forEach循环中的最后一条记录

时间:2019-09-08 20:19:44

标签: javascript sql ajax

ajax请求仅显示循环中的最后一条记录,以下代码:

$.ajax({
                   method: "POST",
                   url: "{{asset('/num')}}",
                   dataType: "json",
                   success: function (data) {
                       var inf;
                       var json_x = data;
                       json_x.forEach(function(item){
                           inf = '<p>'+ item['id'] +"</p>";
                       });
                       insTabl = document.getElementById('table');
                       insTabl.innerHTML = inf;

                   }
               });

发送div id='table'

3 个答案:

答案 0 :(得分:0)

此行

inf = '<p>'+ item['id'] +"</p>";
每次循环,

都会覆盖inf的值。结果,当循环结束时,inf仅保留上一次迭代中的相应值。

要解决此问题,请将inf初始化为空字符串,在循环之前

var inf = "";

,然后用 附加到字符串的这一行替换循环内的上一行:

inf += '<p>'+ item['id'] +"</p>";

这样,您每次在循环中都使HTML字符串更长,最后得到我认为您想要的一系列段落。

答案 1 :(得分:0)

您的循环每次都会覆盖inf变量。而是尝试在每次通过时添加到您的字符串中:

var inf = '';
var json_x = data;
json_x.forEach(function(item){
  inf += '<p>'+ item['id'] +"</p>";
});

答案 2 :(得分:0)

我猜你的问题是这一行:

inf = '<p>'+ item['id'] +"</p>";

您将覆盖旧值,而不仅仅是添加新值(我想您正在尝试的是什么)。因此,您可以这样尝试:

let inf = ""; // you could/should use "let" instead of "var"

//codeline in the callback:
inf += "<p>"+ item['id'] +"</p>";