EXT4 ajax rest 处理方法

前端之家收集整理的这篇文章主要介绍了EXT4 ajax rest 处理方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

可能要处理的情况:
success(成功)——Ext处理
failure(失败),由于通讯问题——Ext处理
failure(失败),由于服务器端异常——开发人员人员必须处理的响应失败……


解决方案一:
在应用程序控制器中编写以下方法

[javascript] view plain copy
  1. //AjaxResponseErrorHandler@H_404_22@@H_404_22@@H_404_22@
  2. Ext.Ajax.on('requestexception'@H_404_22@,@H_404_22@function@H_404_22@(conn,response,options,eOpts){@H_404_22@@H_404_22@
  3. var@H_404_22@error=response.status+@H_404_22@'-'@H_404_22@+response.statusText;@H_404_22@@H_404_22@
  4. console.log('AjaxRequestException!'@H_404_22@+error);@H_404_22@@H_404_22@
  5. if@H_404_22@(response.status!=200){@H_404_22@@H_404_22@
  6. arerrorData=Ext.JSON.decode(response.responseText);console.log('ajaxreqerror:'@H_404_22@+errorData.message);@H_404_22@@H_404_22@
  7. console.log('AjaxrequestError'@H_404_22@,response.status);@H_404_22@@H_404_22@
  8. }@H_404_22@
  9. });@H_404_22@

解决方案二:
当在服务器端发生异常时,可以将500作为响应标头,原因作为HTML内容发送回客户端。
[javascript] view plain copy
  1. store.on(@H_404_22@'loadexception'@H_404_22@,@H_404_22@@H_404_22@
  2. function@H_404_22@(a,conn,resp){@H_404_22@@H_404_22@
  3. if@H_404_22@(resp.status==@H_404_22@'304'@H_404_22@){@H_404_22@@H_404_22@
  4. Ext.Msg.alert('Contenthasnotchanged'@H_404_22@);@H_404_22@@H_404_22@
  5. }else@H_404_22@@H_404_22@if@H_404_22@(resp.status==@H_404_22@'200'@H_404_22@){@H_404_22@@H_404_22@
  6. return@H_404_22@;@H_404_22@//Donothing@H_404_22@@H_404_22@@H_404_22@
  7. }else@H_404_22@@H_404_22@if@H_404_22@(resp.status==@H_404_22@'401'@H_404_22@){@H_404_22@@H_404_22@
  8. Ext.Msg.alert('Authenticationrequired-YouneedtoLogin'@H_404_22@);@H_404_22@@H_404_22@
  9. }else@H_404_22@@H_404_22@if@H_404_22@(resp.status==@H_404_22@'302'@H_404_22@){@H_404_22@@H_404_22@
  10. errorDialog.body.update('SessionHasExpired'@H_404_22@);@H_404_22@@H_404_22@
  11. errorDialog.show();@H_404_22@
  12. }else@H_404_22@@H_404_22@if@H_404_22@(resp.status==@H_404_22@'500'@H_404_22@){@H_404_22@@H_404_22@
  13. errorDialog.body.update(resp.responseText);@H_404_22@
  14. errorDialog.show();@H_404_22@
  15. }else@H_404_22@{@H_404_22@@H_404_22@
  16. errorDialog.body.update('Anuncaughtexceptionhasoccured'@H_404_22@);@H_404_22@@H_404_22@
  17. errorDialog.show();@H_404_22@
  18. }@H_404_22@
  19. }@H_404_22@

解决方案三:
当发送Ajax或REST请求时,Ext JS 4代理通常会预期返回的信息包括参数:data、success和message。参数message是可选的,不过当需要将请求结果显示用户的时候,它就可派上用场了。

[javascript] view plain copy
  1. function@H_404_22@requestMessageProcessor(proxy,response){@H_404_22@@H_404_22@
  2. if@H_404_22@(response&&proxy){@H_404_22@@H_404_22@
  3. try@H_404_22@{@H_404_22@@H_404_22@
  4. var@H_404_22@responseData=proxy.reader.getResponseData(response);@H_404_22@@H_404_22@
  5. @H_404_22@
  6. if@H_404_22@(responseData.message){@H_404_22@@H_404_22@
  7. var@H_404_22@messageDescription=@H_404_22@'Information'@H_404_22@;@H_404_22@//titleofthealertBox@H_404_22@@H_404_22@@H_404_22@
  8. var@H_404_22@messageIcon=Ext.MessageBox.INFO;@H_404_22@@H_404_22@
  9. @H_404_22@
  10. if@H_404_22@(!responseData.success)@H_404_22@@H_404_22@
  11. {@H_404_22@
  12. var@H_404_22@messageDescription=@H_404_22@'Error'@H_404_22@;@H_404_22@@H_404_22@
  13. var@H_404_22@messageIcon=Ext.MessageBox.ERROR;@H_404_22@@H_404_22@
  14. }@H_404_22@
  15. @H_404_22@
  16. Ext.MessageBox.show({@H_404_22@
  17. title:messageDescription,@H_404_22@
  18. msg:responseData.message,@H_404_22@
  19. buttons:Ext.MessageBox.OK,@H_404_22@
  20. icon:messageIcon@H_404_22@
  21. });@H_404_22@
  22. }@H_404_22@
  23. }@H_404_22@
  24. catch@H_404_22@(err){@H_404_22@@H_404_22@
  25. //Malformedresponsemostlikely@H_404_22@@H_404_22@@H_404_22@
  26. console.log(err);@H_404_22@
  27. }@H_404_22@
  28. }@H_404_22@
  29. }@H_404_22@
  30. Andhere’sthepartwhichshouldresidein@H_404_22@proxy:@H_404_22@@H_404_22@
  31. @H_404_22@
  32. proxy:{@H_404_22@
  33. ...@H_404_22@
  34. listeners:{@H_404_22@
  35. exception:function@H_404_22@(proxy,options){@H_404_22@@H_404_22@
  36. requestMessageProcessor(proxy,response);@H_404_22@
  37. }@H_404_22@
  38. },@H_404_22@
  39. afterRequest:function@H_404_22@(request,success){@H_404_22@@H_404_22@
  40. requestMessageProcessor(request.scope,request.operation.response);@H_404_22@
  41. }@H_404_22@
  42. } @H_404_22@

猜你在找的Ajax相关文章