jQuery MiniUI

 找回密码
 立即注册
查看: 32432|回复: 18
打印 上一主题 下一主题

jQuery MiniUI开发系列之:Ajax处理超时、服务端错误   [复制链接]

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2012-12-11 15:30:52 |只看该作者 |正序浏览
MiniUI所有组件的ajax交互,均使用标准、成熟的jQuery.ajax。
依赖于jquery ajax组件的完善性,我们可以拦截住每一次ajax请求处理。
比如,拦截ajax返回数据前,判断返回的数据内容是超时、服务端错误等,此时或弹出信息框、或页面跳转。

首先要注意,将mini_debugger = false;禁止掉默认的MiniUI错误信息框。
mini_debugger在boot.js内设置即可。

监听ajax全局完成事件,判断返回内容是超时的话,则跳转登录页面:
  1. $(document).ajaxComplete(function (evt, request, settings) {
  2.     var text = request.responseText;
  3.     //判断返回的数据内容,如果是超时,则跳转到登陆页面
  4.     if (text == "logout") {
  5.         top.location = '/login.html';
  6.     }
  7. })
复制代码

同理,如果服务端返回错误信息,可以:
  1. $(document).ajaxComplete(function (evt, request, settings) {
  2.     var text = request.responseText;
  3.     var obj = mini.decode(text);
  4.     if (obj.error != 0) {
  5.         alert(obj.errorMsg);
  6.     }
  7. })
复制代码

Rank: 8Rank: 8

19#
发表于 2014-4-8 17:04:31 |只看该作者
angle 发表于 2014-4-8 17:00
我就这样考过去了 感觉么起作用

断点看看,ajaxComplete进去了没.

if(text == "logout"){
                top.location = '/login.jsp';
            }

这个判断只是写的一个伪代码,

var text = request.responseText;这里才是你后台返回的信息

Rank: 2

18#
发表于 2014-4-8 17:00:50 |只看该作者
factory 发表于 2014-4-8 16:18
加到页面之后,你的页面上有ajax的交互,都会被监听到的,不可能没效果,你仔细检查是不是自己写错了 ...
  1. $(document).ajaxComplete(function (evt, request, settings){
  2.             var text = request.responseText;
  3.             //判断返回的数据内容,如果是超时,则跳转到登陆页面
  4.             if(text == "logout"){
  5.                 top.location = '/login.jsp';
  6.             }
  7.         })
复制代码
我就这样考过去了 感觉么起作用

Rank: 8Rank: 8

17#
发表于 2014-4-8 16:18:16 |只看该作者
angle 发表于 2014-4-8 15:08
为啥我加了 还是不起作用

加到页面之后,你的页面上有ajax的交互,都会被监听到的,不可能没效果,你仔细检查是不是自己写错了

Rank: 2

16#
发表于 2014-4-8 15:08:31 |只看该作者
factory 发表于 2014-4-4 14:14
是的

为啥我加了 还是不起作用

Rank: 8Rank: 8

15#
发表于 2014-4-4 14:14:08 |只看该作者
angle 发表于 2014-4-4 13:42
这段代码是加到里吗

是的

Rank: 2

14#
发表于 2014-4-4 13:42:00 |只看该作者
factory 发表于 2014-4-4 13:33
不知道你为什么不起作用. 后台不需要你做什么处理,只要ajax交互完毕,不管正常不正常,只要交互过程结束,自 ...

这段代码是加到<script type="text/javascript"></script>里吗

Rank: 8Rank: 8

13#
发表于 2014-4-4 13:33:39 |只看该作者
angle 发表于 2014-4-4 11:32
我把这段加上怎么不起作用,是不是后台还要做处理

不知道你为什么不起作用. 后台不需要你做什么处理,只要ajax交互完毕,不管正常不正常,只要交互过程结束,自然就会被ajaxcomplete监听到

Rank: 2

12#
发表于 2014-4-4 11:32:25 |只看该作者
factory 发表于 2014-4-2 16:42
是的,需要引用的页面加上,他就是一个JS文件

我把这段加上怎么不起作用,是不是后台还要做处理

Rank: 8Rank: 8

11#
发表于 2014-4-2 16:42:40 |只看该作者
angle 发表于 2014-4-2 16:39
这段代码在每个页面都要加吗

是的,需要引用的页面加上,他就是一个JS文件

Archiver|普加软件

GMT+8, 2024-5-3 01:21 , Processed in 1.046337 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部