gpt4 book ai didi

javascript - $.getjson IE 特定错误

转载 作者:行者123 更新时间:2023-11-29 16:45:09 25 4
gpt4 key购买 nike

通过使用for循环向服务器询问多个数据库条目,我编写了一段代码,它工作得很好,但是:

神奇的是,这段代码在 IE11 上不起作用。对于Google Chrome、Firefox、Safari...,它工作得很好。但不幸的是我需要使用IE11。代码没有给出错误,但从服务器返回的数据不存在。仅传输了 for 循环中的最后一个元素。

通过使用 IE 网络连接表示工具,可以看到所有请求都已发送回来,但不知何故只有最后一个请求已经存在。也许有人已经遇到了这个问题,可以给我一些提示......

function getData(setAddress_Event, liter_hour, Fluid_id, dateArray){
return $.getJSON(setAddress_Event + liter_hour + Fluid_id + "/" + dateArray).then(function(data){
return {
data_list:data
};
});
}

//get day2day data
var numPendingResults = dateArray.length;
//new var declaration --> "let" is only valid inside the for loop!!
for(let j = 0; j<dateArray.length; j++)
{
getData(setAddress_Event(), "liter_hour/", Fluid_id, dateArray[j]).then(function(returndata){
//received data!
data_collection[j] = returndata;
numPendingResults--; // one less to wait for!
if (!numPendingResults) { // we have everything!
//console.log(data_collection);
//function call which sends the data forward
dataReady(data_collection, data_limit);
}

函数dataReady应该处理接收到的数据,但不知何故使用IE11,只有循环中的最后一个请求就在那里!因此我决定提出一个新问题。也许有一位天才可以给我一些提示...... enter image description here

enter image description here

最佳答案

这在 IE11 中与规范不兼容。1不幸的是,for 循环中的 let 在 IE9-IE11(以及 Edge直到 Edge 13 为止;Edge 14 终于做对了)。在兼容 ES2015(又名“ES6”)规范的浏览器中,此代码应显示 1, 2, 3, 4, 5;但在 IE11 上,它显示 6, 6, 6, 6, 6(就像我们使用 var 一样)。

for (let i = 1; i <= 5; ++i) {
setTimeout(function() {
console.log(i);
}, 0);
}

enter image description here

您有几个选择:

  1. 使用 dealing with closures in loops 的其他解决方案之一而不是 let 解决方案。
  2. 使用let,但在循环内部

这是#2,它在 IE11 上可以正常工作:

for (let i = 1; i <= 5; ++i) {
let inner = i; // Different variable
setTimeout(function() {
console.log(inner);
}, 0);
}


1 最初我称其为“bug”,但值得注意的是 IE11 是在最终 ES2015 规范发布前两年发布的,并且 let 的确切语义in 循环在规范过程中四处移动,因此微软可能仓促实现了他们认为将基于当前对话的内容,只是在最终规范发布之前对其进行了更改。这是在规范过程中过早实现的危险。 (与此同时,该流程本身已经更加正式化,以帮助 vendor 避免此类事情。)

关于javascript - $.getjson IE 特定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42295962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com