在ajax中调用PHP函数

时间:2011-02-03 10:30:24

标签: php javascript ajax

我的问题如下: 我有一个名为“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。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您的浏览器正在缓存ajax响应。您需要向ajax请求添加随机值,或将no-cache标头放在被调用页面中。 您可以像这样更改javascript来修复它:

var str = selObj.options[selIndex].text+'&random='+(new Date()).getTime();

和/或使用以下php标题:

header("Cache-control: no-cache");