[关闭]
@dzhai 2015-09-24T07:46:09.000000Z 字数 1489 阅读 1378

Ajax 请求Session过期问题处理

Ajax


当前解决方案重写jquery的$.ajax方法中的success、error、complete方法
当返回内容是501的时候 直接当前页面 跳转登录页面

如果需要自己处理ajax方法
在ajax中添加参数overrideDefault:true
ajax

  1. //ajax 处理全局异常和session过期问题
  2. var _overrideAjax = true;
  3. (function overrideJQeuryAjax(){
  4. if(!_overrideAjax){
  5. return;
  6. }
  7. var oriAjax = $.ajax;
  8. // Override jquery ajax to check if session is valid.
  9. $.ajax = function(options) {
  10. var dataType = options.dataType;
  11. var overrideDefault=options.overrideDefault;
  12. if(typeof(overrideDefault)=='undefined'){
  13. overrideDefault=false;
  14. }
  15. var callback = options["callback"];
  16. var oriSuccess = options["success"];
  17. if ($.isFunction(oriSuccess)) {
  18. options["success"] = function(result) {
  19. if (!overrideDefault && !_checkSessionTimeout(result, dataType)) {
  20. //ajax session过期刷新当前页面
  21. window.location.href=window.location.href;
  22. return false;
  23. }
  24. oriSuccess(result);
  25. };
  26. }
  27. var oriComplete = options["complete"];
  28. if ($.isFunction(oriComplete)) {
  29. options["complete"] = function(xmlHttpRequest, textStatus) {
  30. var result = xmlHttpRequest.responseText;
  31. if (!overrideDefault && !_checkSessionTimeout(result, dataType)) {
  32. window.location.href=window.location.href;
  33. return false;
  34. }
  35. oriComplete(xmlHttpRequest, textStatus);
  36. };
  37. }
  38. //if error function is undefined, set default logic
  39. var orierror = options["error"];
  40. if (!$.isFunction(orierror)) {
  41. options["error"] = function(err) {
  42. //alert("ERROR: "+err.status+" "+err.statusText);
  43. newCommon.lert("alway",{title:"温馨提示",del:true,content:'系统繁忙,请稍后重试'});
  44. //return false;
  45. };
  46. }
  47. oriAjax(options);
  48. };
  49. })();
  50. function _checkSessionTimeout(result,dataType){
  51. var flag = true;
  52. if(typeof(result)!='undefined' && result==501){
  53. flag = false;
  54. }
  55. return flag;
  56. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注