我有Ajax功能
function getOutput()
{
var ajax = getRequest();
document.getElementById('output').innerHTML = "<br/>";
ajax.onreadystatechange = function()
{
if(ajax.readyState == 4)
{
document.getElementById('output').innerHTML = ajax.responseText;
}
}
document.getElementById('output').innerHTML = "<br/><img src=img/ajax-loader.gif><br/><br/>";
ajax.open("GET", "graph_2.php", true);
ajax.send(null);
}
HTML
<form >
<input type="image" src=img/button.jpg class=mygtukas
onclick='getOutput(); return false;'>
</form>
<span id=output></span>
调用PHP代码来创建图形。第一次它工作正常,但当用户更改图形参数并再次按下一个按钮(页面不重新加载)时,它显示旧图形甚至面团创建并保存在服务器中的新图形。
答案 0 :(得分:1)
这可能是因为浏览器的缓存。浏览器会在临时目录中保存计算机上的映像副本。由于此映像与先前版本具有相同的名称和位置,因此它会从磁盘加载映像,从而加载分配速度更快(无需再次下载)
解决方案非常简单。将imagename更改为某个变量。一个广泛使用的技巧是添加一个随机值:
而不是image.jpg,返回image.jpg?_ randomStringHere
randomstring可以基于一些东西。在php中我喜欢使用uniqid()
,因为它始终是唯一的(除非有人可以更快刷新然后1 milisec)。另一种方法(如下面的评论中所建议的)是时间戳。在php time()
就足够了。
如果你想要一个javascript解决方案,你可以在image.src = image.src +'?'+ Math.random()
我刚想到它可能是AJAXcall本身。您可以在AJAXcall中使用上面提到的javascript建议来使每个呼叫都是唯一的
答案 1 :(得分:0)
这是由于缓存问题,你可以像jquery cache:false
一样通过向你的uri添加一个随机值来处理它。
ajax.open("GET", "graph_2.php?_=" + Math.random() , true);