我需要将额外的变量传递给jQuery,ajax回调函数。
例如,给定:
while (K--)
{
$.get
(
"BaseURL" + K,
function (zData, K) {ProcessData (zData, K); }
);
}
function ProcessData (zData, K)
{
console.log (K);
}
ProcessData()
每次都会报告0(或者K的最后一个值是什么)。
如何确保ProcessData()
触发或获得正确的K值?
如果没有将$get()
包装在函数中,有没有办法做到这一点?
答案 0 :(得分:5)
没有。由于闭包的工作方式,所有内部函数都将关闭相同的K变量(最终等于0)。您需要在某处创建一个额外的间接级别来创建单独的范围。 E.g:
while (K--)
{
(function(K)
{
$.get
(
"BaseURL" + K,
function (zData, status) {ProcessData (zData, K); }
);
})(K);
}
此外,成功函数的第二个参数不应该被称为K.该参数将获得状态,然后将影响所需的K.