服务器数据未通过 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 框架上传播的主要内容,如果未能解决你的问题,请参考以下文章

Laravel API ajax 请求未通过身份验证

$.ajax 删除请求未在 capybara-webkit 中发送数据参数

数据未填充到带有 AJAX 请求的选择标记中

我正在向服务器发出 Ajax 发布请求,所有数据都很好,但我的名字和姓氏正在更新为“未定义”

AJAX请求服务器,响应状态码为200,但调用error函数

Ajax 请求未提供任何数据