EXT JS 代理抛出错误

EXT JS proxy throwing error

以下代理偶尔抛出 listener 异常。我添加了一个 timeout:100 来尝试重新创建错误并且它每次都成功抛出它。

但是在default 30 秒以下的请求有时会出现错误。

除了超时之外,还有什么会导致抛出 listener 异常吗?错误日志中没有任何信息。

proxy: {
            type: 'rest',
            url: '/data/identity',
            reader: {
                type: 'json',
                successProperty: 'success',
                messageProperty: 'message'
            },
            writer: {
                type: 'json',
                writeAllFields: true
            },
            listeners: { 
                exception: function(proxy, response, operation, eOpts){
                    if(operation.action === "read"){
                        Ext.Msg.alert('Error Retrieving', response.responseText);
                    }else if(operation.action === "create"){
                        Ext.Msg.alert('Error Creating', response.responseText);
                    }else if(operation.action === "update"){
                        Ext.Msg.alert('Error Updating', response.responseText);
                    }
                }
            }
        }

operation 对象包含有关错误的信息。它有一个方法 getError() 来获取错误的描述。这可能会向您显示您正在寻找的错误消息:

var error = operation.getError()
if(error.status && error.statusText){
    Ext.Msg.alert('Error', 'Error ' + error.status + ': ' + error.statusText)
}

这是我在代理中使用的代码。除了显示 operation 期间抛出的错误外,它还显示服务器端发生的任何错误(我捕获它们并将它们发送到 msg 属性 的 [=21] =] 数据)。我检查 navigator.onLine 的原因是我的应用程序使用了应用程序缓存。

listeners: {
    exception: function(proxy, response, operation){
        var error = operation.getError(),
        errorMsg;
        if(!navigator.onLine){
            errorMsg = Lang._('You are not connected to internet.')
        } else if(Ext.isObject(error)){
            if(error.status && error.statusText)
                errorMsg = 'Error ' + error.status + ': ' + error.statusText
            else
                errorMsg = Ext.encode(error)
        } else if(response.responseText) {
            var json = Ext.decode(response.responseText);
            errorMsg = json.msg
        }
        Ext.Msg.show({
            title: Lang._('Error loading external data'),
            msg: errorMsg,
            icon: Ext.MessageBox.ERROR,
            buttons: Ext.Msg.OK
        })
    }
}