Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Ajax数据中的Array.push()函数生成JSON时出现问题。格式JSON无法用jQuery填充tbody_Javascript_Jquery_Html_Ajax_Web - Fatal编程技术网

Javascript 使用Ajax数据中的Array.push()函数生成JSON时出现问题。格式JSON无法用jQuery填充tbody

Javascript 使用Ajax数据中的Array.push()函数生成JSON时出现问题。格式JSON无法用jQuery填充tbody,javascript,jquery,html,ajax,web,Javascript,Jquery,Html,Ajax,Web,我正试图使用以下代码将数据放入我的tbody 功能已调整选择的银行(银行){ 控制台。日志(银行。长度); $(函数(){ 银行、外汇(职能)(ba) { var计数=1; 变量ligne=$(“”); ligne.append($(“”+count+“”)); ligne.append($(“”+ba.name+“”); ligne.append($(“+ba.frais+”); 计数++; $(“#myrow”).append(ligne); }); }); } 问题是我的banks数组包

我正试图使用以下代码将数据放入我的
tbody

功能已调整选择的银行(银行){
控制台。日志(银行。长度);
$(函数(){
银行、外汇(职能)(ba)
{
var计数=1;
变量ligne=$(“”);
ligne.append($(“”+count+“”));
ligne.append($(“”+ba.name+“”);
ligne.append($(“+ba.frais+”);
计数++;
$(“#myrow”).append(ligne);
});
});
}
问题是我的banks数组包含3行,但我在表中得到的是3行相同的数据,甚至计数保持不变

这是银行代码

var银行=[];
var-bank={};
bank.name=“Natixis”;
bank.logo=“assets/images/2.png”;
bank.frais=“300”;
银行。推(银行);
bank.name=“XXX”;
bank.frais=“500”;
bank.logo=“资产/图像/3.png”;
银行。推(银行);
bank.name=“YYY”;
bank.frais=“700”;
bank.logo=“资产/图像/4.png”;
银行。推(银行);

您能告诉我问题出在哪里吗?

您正在使用相同的银行对象并重新分配其属性。所以你的数组有3次相同的对象。如果每行的count变量重置为1,则应在循环外部初始化,请尝试以下代码

功能已调整选择的银行(银行){
控制台。日志(银行。长度);
var计数=1;
银行、外汇(职能)(ba){
变量ligne=$(“”);
ligne.append($(“”+count+“”));
ligne.append($(“”+ba.name+“”);
ligne.append($(“+ba.frais+”);
计数++;
$(“#myrow”).append(ligne);
});
}
var银行=[];
var bank1={};
bank1.name=“Natixis”;
bank1.logo=“资产/图像/2.png”;
bank1.frais=“300”;
banks.push(bank1);
var bank2={};
bank2.name=“XXX”;
bank2.frais=“500”;
bank2.logo=“资产/图像/3.png”;
banks.push(bank2);
var bank3={};
bank3.name=“YYY”;
bank3.frais=“700”;
bank3.logo=“资产/图像/4.png”;
banks.push(bank3);
经选择的银行(银行)

如果要为表中的每一行重新分配计数,请尝试使用Array.forEach方法的index


是的!您共享的代码片段有两个问题。

1] count变量没有增加,因为它在每次循环迭代中重置为1,将其移到for循环之外将有帮助

2] 使用函数callback动态生成
bank
对象将帮助您构建
banks
对象

var banks =[];

function mySyncPush(name, logo, frais, cb){
    return cb({"name": name, "frais": frais, "logo": logo});
};

mySyncPush("Natixis", "assets/images/2.png", "300", function(bank){
    banks.push(bank);
});

mySyncPush("XXX", "assets/images/3.png", "500", function(bank){
    banks.push(bank);
});

mySyncPush("YYY", "assets/images/4.png", "700", function(bank){
    banks.push(bank);
});

console.log(banks);
如果您迭代name、logo、frais(这将是函数参数),那么实际上可以在循环中使用
mySyncPush
函数


请注意,
mySyncPush
是一个

您可以与标记一起共享json吗?Array.push是同步的。他只是在阵列上按了3次相同的参考。因此,数组保存同一对象3次,其值设置为最后一次。对不起,我投了反对票,因为我们不想让人们认为array.push是异步的。对不起@John,我的错!我把答案编辑得恰到好处。非常感谢反馈。我可以看到改进,但将元素添加到数组中是一种非常复杂的方法<代码>banks.push({name:“yyy”,frais:“300”,logo:“somelogo.png”})是所有需要的。mySyncPush函数混淆了向数组中添加元素的简单性,并提出了OP问题中不存在的其他异步上下文。我不能在不投票支持这个答案的情况下取消我的否决票,但投票支持会使它超越事实上更好的答案。
var banks =[];

function mySyncPush(name, logo, frais, cb){
    return cb({"name": name, "frais": frais, "logo": logo});
};

mySyncPush("Natixis", "assets/images/2.png", "300", function(bank){
    banks.push(bank);
});

mySyncPush("XXX", "assets/images/3.png", "500", function(bank){
    banks.push(bank);
});

mySyncPush("YYY", "assets/images/4.png", "700", function(bank){
    banks.push(bank);
});

console.log(banks);