我有一个asp.net mvc应用程序,我发生了这个奇怪的事情,我不知道为什么。
背景:
我有一个允许用户绘制和编辑图像的页面。这个页面有一个功能,每5分钟,她使用 jquery 对服务器进行ajax调用,在数据库上保存项目的当前状态,另一个调用保存项目的图像是存放在适当的地方。
问题:
在浏览器最小化的情况下,启动此功能后,在ajax调用服务器后, cookie 客户已删除。但是当镀铬最大化时,这样可以正常工作。
备注:
我知道您很难仅仅提供这些信息,但是,如果您能提供线索,那将非常有帮助。我试图揭露问题,以便我们可以匹配类似的问题,为这种情况找到最佳解决方案。
提前谢谢
[编辑] :
我有一些关于这个问题的新内容:
关注jquery
来电代码:
makeAjaxCall(ajaxData) {
var localData = ajaxData.data ? ajaxData.data : {},
urlVariables = {};
localData.cmd = ajaxData.cmd;
var controlerURL = ajaxData.uploadUrl ? HelperJSViewBag.getValue("ajaxCAllUploadURL") : ajaxData.controller;
if (typeof ajaxData.data.urlVariables == "undefined")
ajaxData.data.urlVariables = [];
let editorVersion = "";
let forceEditorVersion = "";
if (typeof UrlParameters != "undefined") {
editorVersion = UrlParameters.getInstance().editorVersion;
forceEditorVersion = UrlParameters.getInstance().forceEditorVersion;
}
else if (typeof HLinks != "undefined") {
editorVersion = HLinks.getUrlVariable("editorVersion");
forceEditorVersion = HLinks.getUrlVariable("forceEditorVersion");
}
if (editorVersion.length > 0)
ajaxData.data.urlVariables.push({
name: "editorVersion",
value: editorVersion,
});
if (forceEditorVersion.length > 0)
ajaxData.data.urlVariables.push({
name: "forceEditorVersion",
value: forceEditorVersion,
});
if (typeof ajaxData.data.urlVariables != "undefined" && ajaxData.data.urlVariables.length > 0)
for (var i = 0; i < ajaxData.data.urlVariables.length; i++)
urlVariables[ajaxData.data.urlVariables[i].name] = ajaxData.data.urlVariables[i].value;
localData = this.fillLocalData(localData);
return $.ajax({
type: 'POST',
data: localData,
url: controlerURL + "?" + $.param(urlVariables),
success: function (data) {
try {
var result = JSON.parse(data),
status = result.status;
delete result.status
switch (status) {
case 1: ajaxData.sucess && ajaxData.sucess(result.data); break;
case 2: ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(result)); break;
}
}
catch (ex) {
ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(ex));
}
},
error: function (data) {
ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(data));
}
});
}
答案 0 :(得分:0)
我想在ASP.NET端看到你的代码,但没有它,我只能猜测:或许检查一下你是否设置了cookie过期日期?以下是使用1天到期创建的Cookie的示例:
Dim myCookie As HttpCookie = New HttpCookie("Customer")
myCookie.Expires = Now.AddDays(1)
Response.Cookies.Add(myCookie)
如果省略myCookie.Expires属性,则cookie&#34;将在用户会话到期时过期&#34;,ref。 https://msdn.microsoft.com/en-us/library/78c837bd.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
答案 1 :(得分:0)
您可以增加Cookie的到期时间(在您创建Cookie的代码中)。
您可以在代码中使用localStorage
而不是Cookie来保存值。
为检验localStorage.setItem
设置值,localStorage.getItem
从本地存储中获取值。