如何将参数传递给jQuery ajax请求的回调?
问题描述:
我需要将额外的变量传递给jQuery,ajax回调函数。如何将参数传递给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()
在函数中?
答
不可以。由于封闭方式的工作原理,所有内部函数将关闭相同的K变量(最终等于0)。您需要额外的间接级别来创建单独的作用域。例如:
while (K--)
{
(function(K)
{
$.get
(
"BaseURL" + K,
function (zData, status) {ProcessData (zData, K); }
);
})(K);
}
此外,成功函数的第二个参数不应该叫K.该参数将获得的地位,那么这将影所需K.
停止回了一下,为什么你做了这么多的请求,这个变量是什么?你是否在跟踪最后的请求何时完成? – 2010-07-05 22:17:52
@Nick Craver:我做了这么多的请求,因为我需要从给定类型的多个页面中选择信息。在这种情况下,K用于跟踪页面顺序,以便可以对结果进行排序(异步请求并不总是按顺序返回)。也可能有其他变数。 ;-) – 2010-07-05 22:21:25
做这个服务器端,单个请求回来会更好......这将是一个更好的用户体验,特别是对于高延迟客户端,这在开发时没有看到效果。 – 2010-07-05 22:25:27