【问题标题】:unable to set cookie after ajax requestajax请求后无法设置cookie
【发布时间】:2017-02-14 03:23:32
【问题描述】:

在完成一些 ajax 请求后,我正在尝试使用 js-cookie.js 设置 cookie。 如果我把

Cookies.set('cookieName',object)
var cookie = Cookies.get('cookieName')
console.log(cookie);

在成功内部我得到未定义,但如果我把它放在 ajax 回调之外我得到打印输出(当然这不是我想要的,因为这是在回调完成之前完成的)。

我还尝试使用 $.whenAll() 函数 (https://gist.github.com/fearphage/4341799) 来等待所有 ajax 请求完成,但再次在回调函数内部未设置 cookie。

【问题讨论】:

  • 你试过在success: function(data) { ... }里面设置cookie吗?您甚至可以将回调作为要包装的函数的参数直接传递给它。
  • 是的,正如我所说,我试图将上面的代码放在“成功:函数(数据){ ... }”中,但在 console.log() 中我没有定义。我不明白你回答的第二部分。
  • 你能展示你尝试的成功函数的完整代码吗?

标签: javascript jquery ajax laravel cookies


【解决方案1】:
    $('form.login').submit(function(e) { 
        $form = $(this);
        e.preventDefault();
        $.get('someUrl')
        .done(function(data) { //data is returned async
            setCookie('weirdName', data, 1); //use async called data
        })
        .fail(function() {
            $('.error').show();
        });
    });

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

【讨论】:

    【解决方案2】:

    您使用 Codeigniter 吗?我刚刚解决了同样的问题,在我的例子中,在 ajax 和外部 ajax 中设置了一个 cookie 有不同的结果,比如不同的 url。

    我还不能发表评论……这就是我在这里发帖的原因。

    【讨论】:

    • 但是问题被标记为 laravel,所以不是 codeigniter
    • 虽然我不确定它在这里是否相关,因为我只想在 ajax 之后设置浏览器 cookie(我不在乎后端是什么)
    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2013-06-13
    • 2017-12-04
    • 2015-08-06
    • 2021-10-03
    相关资源
    最近更新 更多