【发布时间】:2010-07-05 22:14:11
【问题描述】:
我需要将额外的变量传递给 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() 包装在函数中的情况下做到这一点?
【问题讨论】:
-
稍等片刻,你为什么要做这么多请求,这个变量是干什么用的?您是否在跟踪最后一个请求何时完成?
-
@Nick Craver:我做了很多请求,因为我需要从给定类型的几个页面中抓取选择信息。 K,在这种情况下是跟踪页面顺序,以便可以对结果进行排序(异步请求并不总是按顺序返回)。可能还有其他变量。 ;-)
-
最好在服务器端做这个,一个请求返回...这将是一个更好的用户体验,特别是对于高延迟客户端,你看不到发展时的影响。
-
@Nick Craver:啊,但你认为我可以控制有问题的服务器,但我没有。这是一种来自不同来源的“混搭”应用程序,没有API。此外,您提出了一种“海龟一路向下”的方法。有些东西必须在用户等待时查询所有这些页面。在这种情况下,重复请求很少见,因此服务器端缓存几乎没有用处,而客户端浏览器缓存可以很好地加快速度。最后,我必须设置一个网络应用程序而不是一个简单的扩展程序。对我来说不划算。
标签: javascript jquery ajax callback closures