2015-04-02 95 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=/";