2010-03-04 39 views
4

让我开始与现实生活中的使用情况:如何在客户端(浏览器)AJAX请求/响应对上实现拦截器模式?

DWR越来越迷茫的时候服务器端身份验证筛选器尝试重定向AJAX请求,由于过期的会话登录页面。你想添加一些过滤器,以便

  1. 要求其HTTP状态代码等于3XX执行客户端重定向,像了window.location = ... login.html的
  2. 其请求状态代码等于2xx被转发 - 未经更改 - 到任何已注册的处理程序,如DWR。
  3. 其他代码,如4xx可能会触发警报而不是消失在深渊。

我可能不需要解释为什么这种类型的功能是有用的;大多数服务器端Web框架都支持拦截器模式,原因可能与客户端需要的拦截器模式类似。

一个(可能不好)实现可能涉及将原始XMLHttpRequest对象包装在接受某些过滤器函数的代理中。由于jQuery,Prototype,ExtJS等都已经包装了本地浏览器的AJAX对象,这可能是一个额外的步骤。

这可能实现本地?什么是技术挑战?有没有这样的事情?

回答

0

我已经实现了一些在jQuery环境中部分实现了这一点。 jQuery AJAX函数还有errorsuccess函数,以及complete函数。所以,你可以这样做,根据返回的状态代码来拦截和重定向:

complete: 
    function() { 
     if (data.status == 301 || 
      data.status == 302 || 
      // etc. 
     ) { 
      location.replace('error.html') 
     } 

...等等。不是'原生',而是jQuery中相对干净。

相关问题