【问题标题】:server data not propagating on PhoneGap framework from AJAX Request服务器数据未通过 AJAX 请求在 PhoneGap 框架上传播
【发布时间】: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);

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

【问题讨论】:

    标签: php jquery ajax cordova


    【解决方案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");
      

      【讨论】:

      • 运气不好。但很好的建议。我相信这将有助于进一步发展。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多