Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 正在删除Cookie_Jquery_Asp.net_Ajax_Cookies - Fatal编程技术网

Jquery 正在删除Cookie

Jquery 正在删除Cookie,jquery,asp.net,ajax,cookies,Jquery,Asp.net,Ajax,Cookies,我有一个asp.NETMVC应用程序,我有一个奇怪的事情正在发生,我不知道为什么 上下文: 我有一个页面,允许用户绘制和编辑图像。这个页面有一个特性,即每5分钟,她使用jquery对服务器进行一次ajax调用,将项目的当前状态保存在数据库中,并再次调用以保存存储在适当位置的项目图像 问题: 在浏览器最小化的情况下,当启动此功能时,在对服务器进行ajax调用之后,cookie客户将被删除。但是当chrome最大化时,效果很好 注意事项: 这仅在最小化浏览器时发生 这至少在chrome和firefo

我有一个asp.NETMVC应用程序,我有一个奇怪的事情正在发生,我不知道为什么

上下文:

我有一个页面,允许用户绘制和编辑图像。这个页面有一个特性,即每5分钟,她使用jquery对服务器进行一次ajax调用,将项目的当前状态保存在数据库中,并再次调用以保存存储在适当位置的项目图像

问题:

在浏览器最小化的情况下,当启动此功能时,在对服务器进行ajax调用之后,cookie客户将被删除。但是当chrome最大化时,效果很好

注意事项:

  • 这仅在最小化浏览器时发生
  • 这至少在chrome和firefox中发生了
  • 这仅在生产环境中发生。在本地计算机和visual studio上,我无法重现该问题
  • asp.net会话cookie已维护
  • 我知道你很难只在这些信息上提供帮助,但是,如果你能给我一些线索,这将非常有帮助。我正试图揭露这个问题,这样我们就可以匹配类似的问题,找到这个案例的最佳解决方案

    先谢谢你

    [编辑]

    我对这个问题有一些新的看法:

  • 使用Chrome版本63.0.3239.84(官方版本)(64位)
  • Firefox quantum 57.0(64位)
  • 与我最初的想法相反,即使浏览器没有最小化,页面加载后3分钟(如果我调用函数)也会发生这种情况
  • 未删除cookie,但cookie的内容为:
  • 这是一个asp.net web应用程序
  • 控制台没有给出任何错误
  • 查询的版本是2.1.3
  • 遵循
    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));
        }
    });
    }
    
    makeAjaxCall(ajaxData){
    var localData=ajaxData.data?ajaxData.data:{},
    urlVariables={};
    localData.cmd=ajaxData.cmd;
    var controlerURL=ajaxData.uploadUrl?HelperJSViewBag.getValue(“ajaxCAllUploadURL”):ajaxData.controller;
    if(ajaxData.data.urlVariables的类型==“未定义”)
    ajaxData.data.urlVariables=[];
    让editorVersion=“”;
    让forceEditorVersion=“”;
    if(URL参数的类型!=“未定义”){
    editorVersion=UrlParameters.getInstance().editorVersion;
    forceEditorVersion=UrlParameters.getInstance().forceEditorVersion;
    }
    else if(HLinks的类型!=“未定义”){
    editorVersion=HLinks.getUrlVariable(“editorVersion”);
    forceEditorVersion=HLinks.getUrlVariable(“forceEditorVersion”);
    }
    如果(editorVersion.length>0)
    ajaxData.data.urlVariables.push({
    名称:“编辑版本”,
    值:editorVersion,
    });
    如果(forceEditorVersion.length>0)
    ajaxData.data.urlVariables.push({
    名称:“forceEditorVersion”,
    值:forceEditorVersion,
    });
    if(ajaxData.data.urlVariables的类型!=“未定义”&&ajaxData.data.urlVariables.length>0)
    对于(var i=0;i

  • 我想在ASP.NET端查看您的代码,但如果没有,我只能猜测:也许检查一下您是否设置了cookie过期日期?下面是一个cookie的示例,该cookie在过期1天时创建:

    Dim myCookie As HttpCookie = New HttpCookie("Customer")
    myCookie.Expires = Now.AddDays(1)
    Response.Cookies.Add(myCookie)
    
    如果省略mycokie.Expires属性,cookie“将在用户会话过期时过期”,参考

  • 您可以增加cookie的过期时间(在创建cookie的代码中)

  • 您可以在代码中使用
    localStorage
    ,而不是Cookies来保存值


  • 例如,使用
    localStorage.setItem
    设置值,使用
    localStorage.getItem
    从本地存储获取值。

    能否启用网络选项卡,然后最小化浏览器?还要将console.log与time打印在一起,以便您知道发生了什么,查看会话是否出于某种原因超时或未进行呼叫?我假设您使用的是setTimeout或setInterval?无论在何种情况下,在最小化后添加日志记录和检查控制台,因为这与图纸有关,我想在最小化时读取屏幕可能会有一些问题?如果在进行ajax调用之前删除了cookie,那么ajax调用失败可能会导致cookie被删除?您使用什么代码生成cookie?发生这种情况时,您是否遇到任何控制台错误?您使用什么版本的Chrome和FF进行测试?@RicardoRocha我看不出cookie是在哪里创建或更新的。这表明cookie数据是由ASP.NET代码而不是JS创建、管理和更新的。3小时的时间段表明超时正在某个地方触发此更改。cookie似乎没有过期,但已以某种方式更新,内容设置为
    。请将代码张贴在cookie“Customer”所在的位置