данные сервера не распространяются в среде PhoneGap из запроса AJAX - PullRequest
2 голосов
/ 03 августа 2011

Я построил тестовое приложение на 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 ]

4 голосов
/ 04 августа 2011

Чтобы jQuery AJAX не кэшировал ответ сервера на стенографические запросы 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 голосов
/ 03 августа 2011

Возможно, WebKit (браузер HTML5, на котором работает ваше приложение Phonegap) кэширует ответ сервера.Чтобы избежать такого поведения, добавьте это в начале вашего веб-сервиса / 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...