EXT4 ajax rest 处理方法

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


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

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

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

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

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

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...