我的问题如下: 我有一个名为“writeSettings2.php”的简单PHP文件,其中包含:
<?php
$text=$_GET["text"];
setcookie("MG_FileTree_Opener_SelPath", $text);
?>
然后我有了我的PHP页面,其中我有一个名为“makeChanges”的JavaScript函数,在输入类型提交函数中调用此函数并获取组合框选择的值并通过xmlhttp调用上面的PHP函数,如下所示:
<input type="submit" id="choice" value="Escolher" name="Esc" onClick="makeChanges()">
函数“makeChanges”就像:
function makeChanges( )
{
var selObj = document.getElementById('opiniao');
var selIndex = selObj.selectedIndex;
var str = selObj.options[selIndex].text;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","writeSettings2.php?text="+str,true);
xmlhttp.send(null);
history.go(0);
}
基本上我正在做的是使用客户端上的JavaScript来调用PHP函数来重写客户端cookie,然后刷新页面以使PHP用cookie上的新信息重写页面。
此代码工作正常,但只有第2次!例如,我的combox有第1项和第2项。 我加载它是第1项。 更改为第2项。 改回第1项。 再次更改为第2项---- FAILS再也不会更改,它始终保持为1。
有什么建议吗?
答案 0 :(得分:1)
您的浏览器正在缓存ajax响应。您需要向ajax请求添加随机值,或将no-cache标头放在被调用页面中。 您可以像这样更改javascript来修复它:
var str = selObj.options[selIndex].text+'&random='+(new Date()).getTime();
和/或使用以下php标题:
header("Cache-control: no-cache");