Ext JS 4 - Ajax和Rest代理处理服务器端异常和消息的方法

<span style="color: rgb(102, 102, 102); font-family: 微软雅黑, PMingLiU, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 22px; background-color: rgb(244, 247, 231);">可能要处理的情况:</span><br style="color: rgb(102, 102, 102); font-family: 微软雅黑, PMingLiU, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 22px; background-color: rgb(244, 247, 231);" /><span style="color: rgb(102, 102, 102); font-family: 微软雅黑, PMingLiU, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 22px; background-color: rgb(244, 247, 231);">success(成功)——Ext处理</span><br style="color: rgb(102, 102, 102); font-family: 微软雅黑, PMingLiU, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 22px; background-color: rgb(244, 247, 231);" /><span style="color: rgb(102, 102, 102); font-family: 微软雅黑, PMingLiU, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 22px; background-color: rgb(244, 247, 231);">failure(失败),由于通讯问题——Ext处理</span><br style="color: rgb(102, 102, 102); font-family: 微软雅黑, PMingLiU, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 22px; background-color: rgb(244, 247, 231);" /><span style="color: rgb(102, 102, 102); font-family: 微软雅黑, PMingLiU, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 22px; background-color: rgb(244, 247, 231);">failure(失败),由于服务器端异常——开发人员人员必须处理的响应失败……</span> 

<strong>方案一</strong>
//Ajax Response Error Handler
                  Ext.Ajax.on('requestexception', function(conn, response, options, eOpts) {
                         var error = response.status + ' - ' + response.statusText;
                         console.log('Ajax Request Exception! '+error);
                         if (response.status != 200) {
var errorData = Ext.JSON.decode(response.responseText);  console.log('ajax req error:'+errorData.message);
                      console.log('Ajax request Error', response.status);
                           }
                  });

<strong>方案二</strong>
<pre name="code" class="javascript">store.on('loadexception',
 <span style="white-space:pre">	</span>function(a,conn,resp) {
 <span style="white-space:pre">		</span>if (resp.status == '304') {
    <span style="white-space:pre">			</span>Ext.Msg.alert('Content has not changed');
 <span style="white-space:pre">		</span>}else if(resp.status == '200') {
    <span style="white-space:pre">			</span>return; //Do nothing
<span style="white-space:pre">		</span>}else if (resp.status == '401') {
       <span style="white-space:pre">			</span>Ext.Msg.alert('Authentication required - You need to Login');
<span style="white-space:pre">		</span>}else if (resp.status == '302') {
<span style="white-space:pre">			</span>errorDialog.body.update('Session Has Expired');
<span style="white-space:pre">			</span>errorDialog.show();
<span style="white-space:pre">		</span>}else if(resp.status == '500') {
<span style="white-space:pre">			</span>errorDialog.body.update(resp.responseText);
<span style="white-space:pre">			</span>errorDialog.show();
<span style="white-space:pre">		</span>}else{
<span style="white-space:pre">			</span>errorDialog.body.update('An uncaught exception has occured');
<span style="white-space:pre">			</span>errorDialog.show();
<span style="white-space:pre">	</span>}
}<strong>
</strong>

<strong>方案三</strong>
function requestMessageProcessor(proxy, response) {
         if (response && proxy) {                   
                 try {                                              
                          var responseData = proxy.reader.getResponseData(response);
                         
                          if (responseData.message) {
                                   var messageDescription = 'Information'; // title of the alert box
                                   var messageIcon = Ext.MessageBox.INFO;
                                  
                                   if (!responseData.success)
                                   {
                                            var messageDescription = 'Error';
                                            var messageIcon = Ext.MessageBox.ERROR;
                                   }
                                  
                                   Ext.MessageBox.show({
                                            title: messageDescription,
                                            msg: responseData.message,
                                            buttons: Ext.MessageBox.OK,
                                            icon: messageIcon
                                   });
                          }
                 }
                 catch(err) {
                          // Malformed response most likely
                          console.log(err);
                 }
         }
}
And here’s the part which should reside in proxy:


proxy: {
 ...
 listeners: { 
  exception: function(proxy, response, options) {
   requestMessageProcessor(proxy, response);
  }
 },
 afterRequest: function(request, success) {
  requestMessageProcessor(request.scope, request.operation.response);
 }
}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值