gpt4 book ai didi

c# - Jquery ajax 完整未获取自定义响应 header ?

转载 作者:行者123 更新时间:2023-11-28 02:53:54 25 4
gpt4 key购买 nike

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

我有这个

$.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')

它总是说它是空的,但正如你可以清楚地看到 Firebug 说的不是这样。我不明白发生了什么事。

编辑

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

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

如果 ajax 请求出现 403 错误,并且您使用完整的 ajaxSetup 和 ajaxmanager,它仍然会尝试进入成功消息一。

如果你在成功之前放置一个ajax完成(如果完成在成功之后,它不起作用)并且它返回403,那么ajax管理器对其进行操作并完成完成是没有问题的。

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

所以我不知道现在是否可以两者兼得。

编辑2

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

error: status: 403 | URL: /MyURL http://localhost:3086/Plugins/AjaxManager/Source/jquery.ajaxmanager.js Line 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 'complete' 函数通过这些行发送:

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

这会动态创建一个新的 Event 对象,以便清除原始事件中可用的任何数据。

我可能是错的,但是在快速阅读代码后, header 在manageAjax中很早就丢失了,我不确定您在使用这个库时是否可以做您想做的事情,直到库被修补以允许这样做。

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

希望这对你有帮助,

杰罗姆·瓦格纳

关于c# - Jquery ajax 完整未获取自定义响应 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com