2015-04-02 101 views
3

我有AJAX功能如下圖所示:如何設置Cookie與Ajax/jQuery?

$.ajax({ 
url:"cookie.php", 
type: 'post', 
data: {'ok': val}, 
success:function(data) { 
alert(data); 
} 
}); 

和我的的setcookie cookie.php是:

$name = "mySite"; 
$value = "stackoverflow.com"; 
setcookie($name, $value, time() + (86400 * 30), "/"); 
echo $name."=".$value; 

與我的AJAX功能mySite=stackoverflow.com展現在我的網頁,但在cookie的瀏覽器沒有設置。爲什麼?

回答

10

使用HTTP Set-Cookie標頭設置Cookie,該標頭首次加載頁面時會在HTTP響應中發送。

此標頭指示瀏覽器存儲cookie並將其發送回服務器的未來請求。

當您使用ajax設置cookie時,瀏覽器不會重新加載當前頁面,也不會發送新的標頭。
取而代之的是,在後臺發送一個新的請求,其中XMLHttpRequest,並且cookies不會被添加到當前頁面標題,因爲新頁面會重新加載並接收包含cookie的標題。

您必須重新加載頁面並獲取一組新的標題以查看PHP中添加的新Cookie。

還有在javascript中設置cookie的選項,那麼它們將立即在瀏覽器中可見。

document.cookie="mySite=stackoverflow.com; expires=Thu, 18 Dec 2015 12:00:00 UTC; path=/";