EXT4 ajax rest 处理方法

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

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


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

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

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

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

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

猜你在找的Ajax相关文章