Jquery ajax完全没有得到自定义响应头?

我正在尝试传递自定义响应标头以通知我的javascript用户已超时。 当它与jquery ui对话框一起使用时,它的效果很好。

我有这个

$.ajaxSetup ({ complete: function (event, xhr, options) { if (event.getResponseHeader('X-LOGON') === 'LogOn') { window.location.href = "redirect to signin"; } } }); 

所以这应该在每个jquery ajax请求之后运行,并且它会执行。

现在我的对话框中有这样的东西

  $.manageAjax.add('NonCachedAjaxRequests', { type: "GET", url: 'ajaxRequestPath', success: function (result) { $('#Dialog').html(result).dialog( { width: 580, height: 410, resizable: false, modal: true, buttons: { Cancel: function () { $(this).dialog('close'); }, 'Create': function () { // create; } }, close: function () { //destroy } }); } }); return false; }); 

我正在使用一个名为ajax manager http://www.protofunc.com/scripts/jquery/ajaxManager/的东西,这只是帮助停止双击和类似的东西,并使用$ .ajax将使用的所有相同的方法。

所以现在当我看到回来填充上面的对话框的请求时,我在firebug中看到了这一点

 Response Headersview source Server ASP.NET Development Server/10.0.0.0 Date Fri, 02 Jul 2010 22:12:36 GMT X-AspNet-Version 4.0.30319 X-AspNetMvc-Version 2.0 X-LOGON LogOn Cache-Control private Content-Type text/html; charset=utf-8 Content-Length 6468 Connection Close 

注意它是如何说“X-LOGON”但是当涉及到我的ajaxSetup并且到达时

 if (event.getResponseHeader('X-LOGON') === 'LogOn') 

它总是说它是空的,但你可以清楚地看到萤火虫说不然。 我不明白最新情况。

编辑

好吧,这似乎是ajax经理的问题。 我真的想继续使用它或类似的东西,因为它真的有助于停止重复请求。

我发现它不喜欢全局ajaxSetups我不知道它为什么不喜欢它们。 我开始尝试使用状态代码,所以我一直在玩“403”并找到了这个。

如果一个ajax请求403出来并且你使用带有完整和ajaxmanager的ajaxSetup它仍将尝试进入成功消息之一。

如果你在成功之前完成一个ajax(如果完成后它没有成功)并且它返回403,那么ajax管理器没有问题就可以对它进行操作并点击完成。

所以我不知道该怎么做。 我想使用ajaxmanager或类似的东西,我想使用ajaxSetup。

所以我不知道我现在能不能同时拥有这两个。

编辑2

当我使用状态代码和ajaxSetup与ajax管理器时,我收到此错误

错误:状态:403 | URL:/ MyURL http:// localhost:3086 / Plugins / AjaxManager / Source / jquery.ajaxmanager.js第44行

  error: function(ahr, status){ 36 var opts = this; 37 if(status && status.indexOf('error') != -1){ 38 setTimeout(function(){ 39 var errStr = status +': '; 40 if(ahr.status){ 41 errStr += 'status: '+ ahr.status +' | '; 42 } 43 errStr += 'URL: '+ opts.url; 44 throw new Error(errStr); 45 }, 1); 46 } 47 }, 

所以我不知道这是否是我收到错误的另一个原因。

编辑4

好像我一直在使用一个显然不兼容版本1.4的版本(不知道它为何起作用)

无论如何我现在使用3.0它仍然无法工作,但它有一些我想尝试的新选项,但不知道如何使用它们。

http://www.protofunc.com/scripts/jquery/ajaxManager3/

如果你看一下事件/回调它会有一些全局完整的,所以也许这可能是我需要的。 不知道如何运行它。

manageAjax的源代码可在此处获得: http : //www.protofunc.com/scripts/jquery/ajaxManager/jquery.ajaxmanager.js

全局jquery’完整’function通过以下行发送:

 if (opts.global) { $.event.trigger("ajaxComplete", args); } 

这会动态创建一个新的Event对象,因此它会删除您在原始事件中可用的任何数据。

我可能是错的,但是在快速阅读代码之后,在manageAjax中早期丢失了标头,我不确定在使用此库时你能做什么,直到库被修补以允许这样做。

所以罗伯托的评论似乎是一个很好的建议:没有manageAjax尝试它,它很可能会工作

我希望这能帮到您,

杰罗姆瓦格纳