服务器数据未通过 AJAX 请求在 PhoneGap 框架上传播
Posted
技术标签:
【中文标题】服务器数据未通过 AJAX 请求在 PhoneGap 框架上传播【英文标题】:server data not propagating on PhoneGap framework from AJAX Request 【发布时间】:2011-08-03 02:25:15 【问题描述】:我已经使用这个酷炫的 PhoneGap 框架在 android 上构建了一个测试应用程序,但问题是 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);
我的问题是,为什么?为什么更改不会从应用程序中反映出来?
【问题讨论】:
【参考方案1】:为了让 jQuery AJAX 不缓存服务器响应,例如 $.getJSON()
,您必须设置一个全局设置,告诉后续 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");
【讨论】:
【参考方案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");
【讨论】:
运气不好。但很好的建议。我相信这将有助于进一步发展。以上是关于服务器数据未通过 AJAX 请求在 PhoneGap 框架上传播的主要内容,如果未能解决你的问题,请参考以下文章
$.ajax 删除请求未在 capybara-webkit 中发送数据参数
我正在向服务器发出 Ajax 发布请求,所有数据都很好,但我的名字和姓氏正在更新为“未定义”