2011-02-08 3 views
5

Я новичок в ExtJS, и есть проблема, это мой магазинПопытка поймать 302 состояния Ext JS

someStore = new Ext.data.JsonStore({ 

    root: 'results', 
    proxy: new My.HttpProxy({ 
     url: '/cityList', 
     method: 'POST' 
    }), 
    fields: ['id','name'] 
}); 

, когда я получаю и Id мне нужно перезагрузить магазин по идентификатору someStore.reload ({PARAMS: {someId: someId}});

работает нормально, если я использую Ext.data.HttpProxy, но мне нужно поймать 302 и сделать что-то его обработки,

My.Ajax = { 

    proxyRequest: function(o){ 
     this.cbOutSide = o.callback; 
     o.callback = this.cb; 
     Ext.Ajax.request(o); 
    }... 
    cb: function(options, success, response) { 
      .... 
     if (response.status == 200) { 
      var resObj = Ext.util.JSON.decode(response.responseText); 
      this.cbOutSide(resObj); 
     }  
     if (response.status == 302) { 
      Ext.Msg.show({title: '...',msg: 'Time OUT!', 
      buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR}); 
     } 
    } 
}; 

, а также

My.HttpProxy = Ext.extend(Ext.data.HttpProxy, { 

    doRequest : function(action, rs, params, reader, cb, scope, arg) { 

....

if(this.useAjax){ 

     Ext.applyIf(o, this.conn); 
     if (this.activeRequest[action]) { 
     } 
     this.activeRequest[action] = **My.Ajax.proxyRequest(o);** 

проблема заключается в том, что я получаю ответ с данными, которые мне нужны, но хранилище не перезагружается данные. Может быть, JsonStore имеет специфический обратный вызов?

ответ

2

Похоже, вы усложненной:

  • 200 является одним из susscess
  • 302 одна из строя
My.Ajax = new Ext.Ajax.request ({ 
    url: 'foo.php', 
    success: function (f, a) { 
     // a.response.status == 200, or 304 (not modified) 
     var resObj = Ext.util.JSON.decode (response.responseText); 
     this.cbOutSide (resObj); 
    }, 
    failure: function (f, a) { 
     if (a.response.status == 302) { 
      Ext.Msg.show ({ title: '...',msg: 'Time OUT!', 
       buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR }); 
     } 
    }, 
    headers: { 
     'my-header': 'foo' 
    }, 
    params: { foo: 'bar' } 
}); 
Смежные вопросы