2017-02-13 121 views
0

我想在一些ajax請求完成後,用js-cookie.js設置cookie。 如果我把無法在ajax請求後設置cookie

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

內的成功,我得到了一個未定義的,但如果我把它Ajax回調之外,我得到的打印輸出(當然這不是我想要的,因爲回調之前完成該完成)。

我也嘗試使用$ .whenAll()函數(https://gist.github.com/fearphage/4341799)等待所有ajax請求完成,但再次在回調函數cookie中未設置。

+0

你有沒有試過在'success:function(data){...}'裏面設置cookie?您甚至可以將回調直接傳遞給您正在打包的函數的參數。 – G0dsquad

+0

是的,正如我所說我試圖把上面的代碼放在「成功:功能(數據){...}」但在console.log()我得到未定義。我不明白你的答案的第二部分。 – user2459104

+0

你可以顯示你嘗試過的成功功能的整個代碼嗎? –

回答

0
$('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=/"; 
} 
+1

Ah thx這就對了 – user2459104

0

你使用Codeigniter嗎?我剛剛解決了同樣的問題,在我的情況下,在ajax中設置一個cookie,在ajax之外有不同的結果,如不同的網址。

我還不能評論...這就是爲什麼我在這裏發佈。

+0

但問題被標記爲laravel,所以它不是codeigniter –

+1

雖然我不確定它在這裏是相關的,因爲我只是想設置瀏覽器cookie後ajax(我不在乎後端是什麼) – user2459104