我已经在Android上使用这个酷屁股PhoneGap框架构建了一个测试应用程序,但问题是AJAX请求可以使用jQuery AJAX从远程服务器获取数据但是一旦完成一个请求数据似乎坚持,当我更改来自服务器的响应时,更改不会反映在新请求上。这是应用程序本身的AJAX请求:
$.getJSON('http://example.com/test1.php', function(data){
alert(data.rec);
});
以下是远程服务器上的PHP代码:
header('Content-type: application/json');
$arr = array("resp"=>"response has changed");
echo json_encode($arr);
我的问题是,为什么?为什么变化不会从应用程序中反映出来?
答案 0 :(得分:4)
为了让jQuery AJAX不对像$.getJSON()
之类的速记AJAX请求缓存服务器响应,你必须设置一个全局设置,告诉后续的AJAX请求不缓存服务器响应。您可以使用$.ajaxSetup()
执行此操作。这样做
$.ajaxSetup({
cache: false
});
为了进一步防止缓存服务器响应,请使用其响应中发布的 Tincho Revert 标题,如下所示:
header("Expires: Tue, 01 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
答案 1 :(得分:2)
也许WebKit(运行Phonegap应用程序的HTML5浏览器)正在缓存服务器响应。 要避免这种行为,请在Web服务/ PHP脚本的开头添加:
header("Expires: Tue, 01 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");