2011-10-13 83 views
0

以下是我對Ajax請求的代碼:在循環獲取Ajax請求的功能的onSuccess URL路徑

for(some loop) { 
var SOME-VARIABLE = value; 
new Ajax.Request(SERVER-PATH + SOME-VARIABLE, { 
    asynchronous: true, 
    method: 'get', 
    onSuccess: function(response) { 
    //here I require SOME-VARIABLE 
    } 
} 

所以,我執行多個Ajax請求,請求正在完善。但是我想在各自的回調中請求url的變量(SOME-VARIABLE)部分的值。當多重請求被執行時,在回調函數中,我無法獲得變量的實際值(它被後續的循環迭代所取代)有什麼方法可以訪問Onsuccess函數的響應對象中的request-url-path。

謝謝。

回答

0

大括號在javasrcipt中沒有作用域,但是函數可以。因此,在包裝,括號中的代碼按功能:

for(some loop) { 
    var SOME-VARIABLE = value; 
    (function(url) { 
    new Ajax.Request(SERVER-PATH + url, { 
     asynchronous: true, 
     method: 'get', 
     onSuccess: function(response) { 
     //here You can access url 
     } 
    } 
    }) (SOME-VARIABLE); 
+0

十分感謝,這個工作! – Shanta

0

您可以將某些變量存儲爲您的要求的屬性:

new Ajax.Request(SERVER-PATH + SOME-VARIABLE, { 
    asynchronous: true, 
    method: 'get', 
    options: {SOME-VARIABLE: SOME-VARIABLE}, 
    onSuccess: function(response, obj) { 
     alert(obj.options.SOME-VARIALBE); 
    } 
} 

編輯: 得到這個使用ExtJS的3.1和4.0.2工作:

var myOption = 'asdf'; 
Ext.get('myButton').on('click', function(){ 
    Ext.Ajax.request({ 
     url: 'http://jsfiddle.net/', 
     options: {myOp: myOption }, 
     success: function(res, obj) { 
      alert(obj.options.myOp); 
     }, 
     failure: function(res, obj) { 
      alert(obj.options.myOp); 
     } 
    }); 
}); 
+0

看似簡單的解決方案,但沒有奏效,我發現obj undefined。 – Shanta

+0

你使用的是什麼Ext版本? –

+0

是的,這是版本問題,我使用的是Ext2.0.2,我不能升級它,因爲這個lib是另一個(第三方)框架的一部分。謝謝你糾正我。 – Shanta