Javascript JQuery AjaxComplete方法剥离自定义头?
我试图在本SO帖子中遵循解决方案中的选项#3: 在jquery的ajaxComplete方法中读取自定义头时遇到问题 我已经在fiddler和chrome的调试工具中确认,自定义标题实际上正在被浏览器发回和接收 响应标题(在Fiddler中): 响应标题(由Chrome接收): 响应头(通过调用传入ajaxComplete的xmlHttpRequest变量上的“getAllResponseHeaders()”找到): 有趣的是,在返回原始ajax请求时调用的函数(由jquery启动)确实会收到未经授权的头 有人知道这里发生了什么,我能做些什么来解决这个问题吗 下面是我的“ajaxComplete”javascript代码Javascript JQuery AjaxComplete方法剥离自定义头?,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我试图在本SO帖子中遵循解决方案中的选项#3: 在jquery的ajaxComplete方法中读取自定义头时遇到问题 我已经在fiddler和chrome的调试工具中确认,自定义标题实际上正在被浏览器发回和接收 响应标题(在Fiddler中): 响应标题(由Chrome接收): 响应头(通过调用传入ajaxComplete的xmlHttpRequest变量上的“getAllResponseHeaders()”找到): 有趣的是,在返回原始ajax请求时调用的函数(由jquery启动)确实会收到未
$(document).ajaxComplete(function (event, request, settings) {
alert(request.getResponseHeader('Unauthorized'));
});
你可以看看。如果您在页面上使用相同的插件(ajaxmanager),可能会有所帮助。如果没有,请检查您的其他插件。Vucetica的初始响应让我思考,我花了最后一个小时查看了jquery的代码。我有我的自定义标题回来了。看起来问题源于原始ajax请求的成功回调中代码中的未处理异常 我确实应该修复一些问题,但jquery允许自己以一种无声失败的方式受到影响,并且只影响自定义头,这似乎很奇怪。这种意想不到的行为一开始确实把我引向了错误的方向 无论如何,谢谢大家的帮助 为了完整起见,这里是我的前后代码 Before(在ajaxComplete方法中未收到自定义头) 之后(工作)
我事先确实看到过这样的帖子。我没有使用Ajax管理器。我确实加载了其他JS库,我会检查它们是否使用Ajax管理器或与ajaxComplete绑定,但在这一点上不太可能。确认,没有提及ajaxmanager,“Ajax管理器”,ajaxcomplete或ajaxsuccess除了我在原始帖子中提到的代码和jquery本身之外的任何地方。你知道“Content Type:application/json;charset=utf-8”来自哪里吗?在getAllResponseHeaders中有,但在chrome inspect中没有。另外,您可以发布原始ajax调用的getAllResponseHeaders的结果吗?
Cache-Control:private
Connection:Close
Content-Length:0
Date:Sun, 15 Jan 2012 04:12:13 GMT
Server:ASP.NET Development Server/10.0.0.0
Unauthorized:1
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
Date: Sun, 15 Jan 2012 04:42:21 GMT
X-AspNet-Version: 4.0.30319
Connection: Close
Content-Length: 65
X-AspNetMvc-Version: 3.0
Server: ASP.NET Development Server/10.0.0.0
Content-Type: application/json; charset=utf-8
Cache-Control: private
$(document).ajaxComplete(function (event, request, settings) {
alert(request.getResponseHeader('Unauthorized'));
});
$.ajax({
type: "GET",
url: "/Game/GetPlay/27?roundId=" + that.gameState.RoundToDisplay,
contentType: "application/json; charset=utf-8",
data: {},
dataType: "json",
success: function (play, request, settings) {
that.play = play;
that.startGame();
},
error: null,
cache: false
});
$.ajax({
type: "GET",
url: "/Game/GetPlay/27?roundId=" + that.gameState.RoundToDisplay,
contentType: "application/json; charset=utf-8",
data: {},
dataType: "json",
success: function (play, request, settings) {
that.play = play;
try {
that.startGame();
} catch(err){
}
},
error: null,
cache: false
});