在我公司的在线应用,我们已经建立了一个基于JSONP的API,返回所使用的一个书签我正在开发的一些数据。 这里是一个快速测试页面我建立命中使用jQuery的API的URL $.ajax()
方法:
http://troy.onespot.com/static/3915/index.html
如果你看一下使用Firebug的“网络”选项卡(或类似)的要求,你会看到发生的事情是该URL请求成功,但由于我们的应用程序重定向任何未经授权的用户登录页面,登录页面还通过浏览器请求,看似理解,如JavaScript。 这不可避免地会导致异常,因为登录页面是HTML,JavaScript不。
基本上,我正在寻找任何类型的挂钩来确定何时在重定向请求的结果 - 一些方法来确定URL解析为一个JSONP响应(这将执行我的书签脚本的预定义的方法),或者如果它导致了重定向。 我试着包裹$.ajax()
方法在try {} catch(e) {}
块,但不捕获异常,我假设,因为请求是成功的,只是没有登录页面的解析如JavaScript。 是否有任何地方,我可以用一个try {} catch(e) {}
块,或任何财产$.ajax()
可能让我磨练异常或以其他方式确定,我已经被重定向?
其实,我怀疑这是可能的,因为$.getScript()
或相当于设置$.ajax()
只是用来加载脚本动态,并不能检查响应头,因为它是跨域的,而不是真正的AJAX:
http://api.jquery.com/jQuery.getScript/
我的替代方案是只断火的$.ajax()
一段时间,直到我要么得到了JSONP回调或不这样做,而在后一种情况下,假定用户没有登录并提示他们这样做。 我不喜欢这种方法,虽然,因为这将导致大量的应用服务器不必要的请求,并且也将堆积在此期间的JavaScript异常。
感谢您的任何建议!