2016-02-18 65 views
1

當我發出一個jQuery AJAX請求時,cookie顯示爲空。我嘗試設置會話,而且工作,但我希望這是一個cookie不是會話。它不是跨域,它只存儲一個簡單的1個字符的數字。我想檢索號碼,做點什麼,然後更新號碼。當然,我可以使用會話,但我希望這是一個cookie。cookie值在ajax php腳本中爲空

setcookie("currentResult", "", time()+60*60*24*30*12, "/", "*(mysite)**.com", 0,1); 

然後我的值在我的腳本後添加到像這樣

$_COOKIE["currentResult"] = $ii; 

然後當我打電話的AJAX PHP腳本這樣;

jQuery.ajax({ 
    type: "POST", 
    url: "****(myscriptname.php)****", 
    dataType: "html", 
data: "start=" +start, 
success: function(data) 
    { 
     dataq = jQuery.trim(data); 




    } }); 

但是,唉,該腳本中的cookie是空的。 我在頁面上回應它,它的設置很好,沒有問題。

我測試的是與會話完全相同,會話在AJAX腳本中。我似乎只是有一個問題與餅乾。

它是我嘗試在ajax請求中使用的任何cookie。

我只能找到其他人談論跨域問題,但這不是跨域...我很困惑! 請幫忙!

回答

0

看看第七參數... 1 =不要讓JavaScript的看到這個cookie

僅Http
爲真時,cookie將只能通過HTTP協議訪問。這意味着cookie不能被腳本語言(如JavaScript)訪問。有人認爲,這種設置可以通過XSS攻擊有效地幫助減少身份盜用(儘管它不受所有瀏覽器的支持),但是這種說法往往存在爭議。在PHP 5.2.0中添加。 TRUE或FALSE

+0

1如果你添加源 – Derek

+0

這將是這種情況,如果他綁定訪問document.cookie,但他只是做阿賈克斯,它的瀏覽器不是JavaScript來處理請求中的cookie。 – WooDzu

+0

感謝您的幫助球員,我會盡力將1改爲0,但是今天我可能沒有機會在此工作:(只要我有我會發布更新 –

0

好吧,現在我已經解決了這個問題。

我完全誤解了cookies的工作原理。

所以我現在知道cookie只能在任何輸出之前設置。我試圖使用`$ _COOKIE [「currentResult」] = $ ii;在輸出已經開始之後通過執行的腳本中途更新cookie。

我很困惑,因爲在頁面上我可以回顯更新的cookie。當我創建一個測試頁面時,cookie實際上並沒有更新,並且仍然處於當我使用了

setcookie(「currentResult」,「」,time()+ 60 * 60 * 24 * 30 * 12,「/」,「*(mysite)**。com」,0,1);你可以看到的聲明是空白的。

因此,要解決這個問題,我已經改編了我的腳本,現在所有的cookies都在任何輸出前設置和更新。另外我不使用`$ _COOKIE [「currentResult」] = $ ii;更新我的cookie了。我現在使用完整的setcookie代碼。

這已修復並解決了我的問題。 希望這可以幫助其他任何業餘愛好者。 :-)`