2014-09-22 3 views
0

Я пытаюсь изучить extjs 4.1 MVC. У меня есть контроллер с несколькими вызовами ajax. Когда код запускается в Firefox, я вижу, что все вызовы ajax сделаны, но появляется предупреждение только одного из методов sucess. Хотя данные доступны для всех 4 вызовов. Любые предложения, что я делаю неправильно? код ниже:ExtJs Несколько вызовов Ajax

Ext.define('App.controller.StartupController', { 
extend : 'Ext.app.Controller', 

models : [ 'BasicModel' ], 

stores : [ 'UserStore','RoleStore','RegionStore','ProductStore','FunctionStore' ], 

views : [ 'FooterContainer', 'BodyContainer' ], 

init : function() { 
    this.loadStore(); 
    this.loadRole(); 
    this.loadRegion(); 
    this.loadFunction(); 
    this.loadProduct(); 
    this.control({ 

    }); 
}, 
loadRole: function(){ 
    // create an AJAX request for role 
    var roleStore = this.getRoleStoreStore(); 
    Ext.Ajax.request({ 
     url : 'forms/loadRole', 
     method : 'POST', 
     headers : { 
      'Content-Type' : 'application/json' 
     }, 
     params : { 
      "test" : "testParam" 
     }, 
     success : function(response) { 
      var jsonResp = Ext.JSON.decode(response.responseText); 
      roleStore.loadData(jsonResp); 
      Ext.Msg.alert("Info", "UserName from Server 1: "+ jsonResp.userName); 
     }, 
     failure : function(response) { 
      var jsonResp = Ext.decode(response); 
      Ext.Msg.alert("Error", jsonResp.error); 
     } 
    }); 
}, 
loadRegion: function(){ 
    // create an AJAX request for region 
    var regionStore = this.getRegionStoreStore(); 
    Ext.Ajax.request({ 
     url : 'forms/loadRegion', 
     method : 'POST', 
     headers : { 
      'Content-Type' : 'application/json' 
     }, 
     params : { 
      "test" : "testParam" 
     }, 
     success : function(response) { 
      var jsonResp = Ext.JSON.decode(response.responseText); 
      regionStore.loadData(jsonResp); 

      Ext.Msg.alert("Info", "UserName from Server 2: "+ jsonResp.userName); 
     }, 
     failure : function(response) { 
      var jsonResp = Ext.decode(response); 
      Ext.Msg.alert("Error", jsonResp.error); 
     } 
    }); 
}, 
loadFunction: function(){ 
    // create an AJAX request for function 
    var functionStore = this.getFunctionStoreStore(); 
    Ext.Ajax.request({ 
     url : 'forms/loadFunction', 
     method : 'POST', 
     headers : { 
      'Content-Type' : 'application/json' 
     }, 
     params : { 
      "test" : "testParam" 
     }, 
     success : function(response) { 
      var jsonResp = Ext.JSON.decode(response.responseText); 
      functionStore.loadData(jsonResp); 
      Ext.Msg.alert("Info", "UserName from Server 3: "+ jsonResp.userName); 
     }, 
     failure : function(response) { 
      var jsonResp = Ext.decode(response); 
      Ext.Msg.alert("Error", jsonResp.error); 
     } 
    }); 
}, 
loadProduct: function(){ 
    // create an AJAX request for product 
    var productStore = this.getProductStoreStore(); 
    Ext.Ajax.request({ 
     url : 'forms/loadProduct', 
     method : 'POST', 
     headers : { 
      'Content-Type' : 'application/json' 
     }, 
     params : { 
      "test" : "testParam" 
     }, 
     success : function(response) { 
      var jsonResp = Ext.JSON.decode(response.responseText); 
      productStore.loadData(jsonResp); 
      Ext.Msg.alert("Info", "UserName from Server 4: "+ response.responseText); 
     }, 
     failure : function(response) { 
      var jsonResp = Ext.decode(response); 
      Ext.Msg.alert("Error", jsonResp.error); 
     } 
    }); 
}, 
loadStore : function() { 
} 

});

ответ

1

Я предположил бы, что происходит на внутр имеет только один экземпляр компонента MessageBox и он вызывался в четыре раза .. . Но вы можете видеть только последний. Если вы просто хотите получить какую-то форму обратной связи, я бы пошел с помощью console.log вместо Ext.Msg.alert.

+0

Вы правы. Пока я тестировал, я внимательно наблюдал. Сообщение MessageBox исправлено там, и сообщение изменилось. Поскольку мои сообщения, где схожие только с изменением числа, казалось, что только один подходит. Изменен код на «console.log», как это было только для отладки. – Asharan

0

просто сделать это так, поставить следующий запрос Аякса на ответ успеха

Ext.define('App.controller.StartupController', { 
extend : 'Ext.app.Controller', 

models : [ 'BasicModel' ], 

stores : [ 'UserStore','RoleStore','RegionStore','ProductStore','FunctionStore' ], 

views : [ 'FooterContainer', 'BodyContainer' ], 

init : function() { 
    this.loadStore(); 
    this.loadRole(); 
    this.control({ 

    }); 
}, 
loadRole: function(){ 
    // create an AJAX request for role 
    var roleStore = this.getRoleStoreStore(); 
    Ext.Ajax.request({ 
     url : 'forms/loadRole', 
     method : 'POST', 
     headers : { 
      'Content-Type' : 'application/json' 
     }, 
     params : { 
      "test" : "testParam" 
     }, 
     success : function(response) { 
      var jsonResp = Ext.JSON.decode(response.responseText); 
      roleStore.loadData(jsonResp); 
      Ext.Msg.alert("Info", "UserName from Server 1: "+ jsonResp.userName); 
      this.loadRegion(); 
     }, 
     failure : function(response) { 
      var jsonResp = Ext.decode(response); 
      Ext.Msg.alert("Error", jsonResp.error); 
     } 
    }); 
}, 
loadRegion: function(){ 
    // create an AJAX request for region 
    var regionStore = this.getRegionStoreStore(); 
    Ext.Ajax.request({ 
     url : 'forms/loadRegion', 
     method : 'POST', 
     headers : { 
      'Content-Type' : 'application/json' 
     }, 
     params : { 
      "test" : "testParam" 
     }, 
     success : function(response) { 
      var jsonResp = Ext.JSON.decode(response.responseText); 
      regionStore.loadData(jsonResp); 

      Ext.Msg.alert("Info", "UserName from Server 2: "+ jsonResp.userName); 
      this.loadFunction(); 
     }, 
     failure : function(response) { 
      var jsonResp = Ext.decode(response); 
      Ext.Msg.alert("Error", jsonResp.error); 
     } 
    }); 
}, 
loadFunction: function(){ 
    // create an AJAX request for function 
    var functionStore = this.getFunctionStoreStore(); 
    Ext.Ajax.request({ 
     url : 'forms/loadFunction', 
     method : 'POST', 
     headers : { 
      'Content-Type' : 'application/json' 
     }, 
     params : { 
      "test" : "testParam" 
     }, 
     success : function(response) { 
      var jsonResp = Ext.JSON.decode(response.responseText); 
      functionStore.loadData(jsonResp); 
      Ext.Msg.alert("Info", "UserName from Server 3: "+ jsonResp.userName); 
      this.loadProduct(); 
     }, 
     failure : function(response) { 
      var jsonResp = Ext.decode(response); 
      Ext.Msg.alert("Error", jsonResp.error); 
     } 
    }); 
}, 
loadProduct: function(){ 
    // create an AJAX request for product 
    var productStore = this.getProductStoreStore(); 
    Ext.Ajax.request({ 
     url : 'forms/loadProduct', 
     method : 'POST', 
     headers : { 
      'Content-Type' : 'application/json' 
     }, 
     params : { 
      "test" : "testParam" 
     }, 
     success : function(response) { 
      var jsonResp = Ext.JSON.decode(response.responseText); 
      productStore.loadData(jsonResp); 
      Ext.Msg.alert("Info", "UserName from Server 4: "+ response.responseText); 
     }, 
     failure : function(response) { 
      var jsonResp = Ext.decode(response); 
      Ext.Msg.alert("Error", jsonResp.error); 
     } 
    }); 
}, 
loadStore : function() { 
} 
+0

Это не сработало, и проблема была такой же. Как предложено ниже «Гордон Бокус», экземпляр MessageBox такой же. Более того, я потеряю призывы «Async» с таким подходом. – Asharan

Смежные вопросы