在Ext.dada.Store加载时,在服务器端做个验证。比如:当前用户是否登录,获得是否有权限访问改地址。   没有验证通过,返回给Store一个错误标识JSON数据,如:{"failure" : "true","error":"12fsdf2f35b"}   怎么在Store加载完毕之后获得服务器返回的错误标识。

解决方案 »

  1.   

     如何获得那个JSON数据,解析是可以,关键是拿不到Response对象!
      

  2.   

    你向后台发送请求的时候,应该就有reponse啊,然后返回{success:false}
      

  3.   

       向后台发请求的是Ext.data.Store的load()方法,Response已经被封装掉了
      

  4.   

    把{"failure" : "true","error":"12fsdf2f35b"},改成
    {success : "true",error:"12fsdf2f35b"},
    Ext 写 success:function(response){Ext.Msg.alert('消息',response.responseText.error)}
      

  5.   

    there is a callback method in Ext.data.store.load() method,
    u can try call callback method.
      

  6.   

     load事件是加载了Ext.data.Store的Reader的特定格式的数据,如果不是特定格式的就不会触发load事件。会触发loadexception事件,但是该事件拿不到返回的数据。
      

  7.   

    refer to :
    http://www.javaeye.com/problems/19795
      

  8.   

    if (Ext.data.Store) {
    var _constructorFn$ = Ext.data.Store.prototype.constructor;
    Ext.data.Store.prototype.constructor = function(A) {
    _constructorFn$.call(this, A);
    if (!this.hasListener('loadexception')) {
    this.on('loadexception', showExtLoadException);
    }
    }
    }function showExtLoadException(This, options, response, error) { if (debug) {
    if (error) {
    top.Ext.Msg.alert("错误", "解析数据时发生错误:" + error.message);
    return;
    }
    } var status = response.status;
    var text = response.responseText; switch (status) {
    case 404:
    Ext.MessageBox.alert("错误", "加载数据时发生错误:请求url不可用.");
    break;
    case 200:
    if (text.length > 0) {
    var data = Ext.decode(text);
    if (data && data.error) {
    Ext.MessageBox.alert("错误", "加载数据时发生错误:<br/>" + data.error);
    } else {
    Ext.MessageBox.alert("错误", "加载数据时发生错误:<br/>" + text);
    }
    }
    break;
    case 0:
    Ext.MessageBox.alert("错误", "加载数据时发生错误:<br/>" + "远程服务器无响应");
    break;
    default:
    var data = Ext.decode(text);
    if (data && data.error) {
    Ext.MessageBox.alert("错误", "加载数据时发生错误<br/>错误码:" + status
    + "<br/>错误信息:" + data.error);
    } else {
    Ext.MessageBox.alert("错误", "加载数据时发生错误<br/>错误码:" + status
    + "<br/>错误信息:" + text);
    } break;
    }}
      

  9.   

    if (Ext.data.Store) {
    var _constructorFn$ = Ext.data.Store.prototype.constructor;
    Ext.data.Store.prototype.constructor = function(A) {
    _constructorFn$.call(this, A);
    if (!this.hasListener('loadexception')) {
    this.on('loadexception', showExtLoadException);
    }
    }
    }function showExtLoadException(This, options, response, error) {if (debug) {
    if (error) {
    top.Ext.Msg.alert("错误", "解析数据时发生错误:" + error.message);
    return;
    }
    }var status = response.status;
    var text = response.responseText;switch (status) {
    case 404:
    Ext.MessageBox.alert("错误", "加载数据时发生错误:请求url不可用.");
    break;
    case 200:
    if (text.length > 0) {
    var data = Ext.decode(text);
    if (data && data.error) {
    Ext.MessageBox.alert("错误", "加载数据时发生错误:<br/>" + data.error);
    } else {
    Ext.MessageBox.alert("错误", "加载数据时发生错误:<br/>" + text);
    }
    }
    break;
    case 0:
    Ext.MessageBox.alert("错误", "加载数据时发生错误:<br/>" + "远程服务器无响应");
    break;
    default:
    var data = Ext.decode(text);
    if (data && data.error) {
    Ext.MessageBox.alert("错误", "加载数据时发生错误<br/>错误码:" + status
    + "<br/>错误信息:" + data.error);
    } else {
    Ext.MessageBox.alert("错误", "加载数据时发生错误<br/>错误码:" + status
    + "<br/>错误信息:" + text);
    }break;
    }}