服务器数据不会从AJAX请求传播到PhoneGap框架上

时间:2011-08-03 02:25:15

标签: php jquery ajax cordova

我已经在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);

我的问题是,为什么?为什么变化不会从应用程序中反映出来?

2 个答案:

答案 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");