在Ajax请求的onSuccess函数中获取url路径

时间:2011-10-13 10:37:30

标签: extjs

以下是我的Ajax请求代码:

 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)部分的值。当执行多请求时,在回调中我无法获得变量的实际值(它被后续的循环迭代替换)是否有任何方法可以访问{{1}的响应对象中的request-url-path功能。

谢谢。

2 个答案:

答案 0 :(得分:0)

curly括号在javascript中没有范围,但函数有。因此,按函数包含括号内的代码:

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);

答案 1 :(得分:0)

您可以将SOME-VARIABLE存储为请求中的属性:

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);
        }
    });
});