各位大佬,江湖救急!!!!
我一个.cshtml的页面table。原先有一条数据,我通过模态框新增一条数据,保存到数据库,刷新列表,新增的数据显示却和第一条数据一样。(数据库里不一样)
这是什么原因???
可能是遇到经典的闭包问题,js 在进行for循环时 变量被捕获,实际上取值就成了最后一个。
你试试改改排序,看看是不是界面上两个就成了第二个。
尝试在浏览器控制台执行如下代码:
for(var i=1; i<=5; i++){
setTimeout(function timer(){
console.log( i );
}, i1000);
}
你会看到输出了5个6。
只需要略作修改:
for(var i=1; i<=5; i++){
let j=i;
setTimeout(function timer(){
console.log( j );
}, i1000);
}
再次执行,就能看到你真正想要的结果
不太懂
@Yimi依米: 如果你使用for循环显示列表,尝试在for 之后,定义一个变量承接一下遍历对象,然后再使用。
@dongfo: 已经解决啦,是返回数据之后的排序问题
数据库里不一样,页面显示一样的话 可以看看是不是数据获取有问题,把获取的数据打印出来,要不就是 显示的问题,或者获取数据后你做了其他的操作?
并没有喔,返回页面之前数据是正常的
是不是没有重新加载table里面的数据啊?
重新加载了
设个断点跟踪一下代码
我之前一不注意也犯过这种错误
这个是页面用错了,比如你使用for循环添加的,比如:
for (var i = 0; i < list.length; i++) {
var name = list[i].name; //注意,这里如果是list[0].name,那么不管循环几次,数据都是第一个的数据
}
不是for循环
可能是列表插件的问题