如何将参数传递给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()在函数中?

+0

停止回了一下,为什么你做了这么多的请求,这个变量是什么?你是否在跟踪最后的请求何时完成? – 2010-07-05 22:17:52

+0

@Nick Craver:我做了这么多的请求,因为我需要从给定类型的多个页面中选择信息。在这种情况下,K用于跟踪页面顺序,以便可以对结果进行排序(异步请求并不总是按顺序返回)。也可能有其他变数。 ;-) – 2010-07-05 22:21:25

+0

做这个服务器端,单个请求回来会更好......这将是一个更好的用户体验,特别是对于高延迟客户端,这在开发时没有看到效果。 – 2010-07-05 22:25:27

不可以。由于封闭方式的工作原理,所有内部函数将关闭相同的K变量(最终等于0)。您需要额外的间接级别来创建单独的作用域。例如:

while (K--) 
{ 
    (function(K) 
    { 
     $.get 
     (
      "BaseURL" + K, 
      function (zData, status) {ProcessData (zData, K); } 
    ); 
    })(K); 
} 

此外,成功函数的第二个参数不应该叫K.该参数将获得的地位,那么这将影所需K.