Ajax请求成功变量范围

时间:2013-03-22 12:07:34

标签: ajax extjs

我在Ext.Ajax.request的成功中有一个功能。我需要这个函数返回一个带有JSON Store的变量。 我的代码是:

gridplatos.getStore().each(function(r){
  var store;
  Ext.Ajax.request({
    params:{
      grado: r.get('grado'),
      menudiario: r.get('menudiario'),
      plato: r.get('plato'),
      transCode: Ext.getCmp('transCode').getValue()
    },
    url: 'src/Drivers/AlumnosPlatoArmado/',
    method: 'GET',
    success: function(response,store){
      store = Ext.create('KMA.store.AlumnosPlatoArmado',{}).load();
    }
  });
  console.log(store);
}

但是,console.log(store)返回“undefined”。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是因为ajax是一个异步函数调用,意味着一旦请求被发送到服务器,客户端将继续执行以下语句而不等待服务器响应。

在您的情况下,ajax请求会发送到src/Drivers/AlumnosPlatoArmado/,然后在该时间点执行服务器回复console.log(store);之前store的值为undefined。成功完成ajax请求后,将调用已注册的成功处理程序,您将设置store的值。

在异步执行环境中,必须仅使用已注册的回调方法对async方法返回的值执行所有操作。