2016-02-18 29 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代码。

这已修复并解决了我的问题。 希望这可以帮助其他任何业余爱好者。 :-)`