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);