AJAX回调中变量的值错误

AJAX回调中变量的值错误,第1张

AJAX回调中变量的值错误

问题在于

BTWnummer
调用回调时变量已更改,因为循环是在异步回调之前完全执行的。

您可以将其值保存在立即调用的函数中:

for (var i = 0; i < arraylength; i++) {   (function(BTWnummer){      var callUrl = 'http://isvat.appspot.com/'+Land+'/'+BTWnummer+'/?callback=?';      $.getJSON(callUrl, BTWnummer, function(data){         alert(data+' '+BTWnummer);      });   })(BTW[i]);}

如果很难阅读,则可以使用另一种方法将其与命名函数(而不是匿名函数)一起使用:

function f(BTWnummer){  var callUrl = 'http://isvat.appspot.com/'+Land+'/'+BTWnummer+'/?callback=?';  $.getJSON(callUrl, BTWnummer, function(data){     alert(data+' '+BTWnummer);  });}for (var i = 0; i < arraylength; i++) {    f(BTW[i]);}

之所以可行,是因为Javascript中变量的范围是函数执行。不同的执行

f
存储不同的值
BTWnummer
(寻找“关闭”更深入)。

在不久的将来,ES6将不再需要此技巧,因为该

let
关键字将定义范围为块的变量。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5662535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存