2011-08-03 6 views
2

このCool-ass PhoneGapフレームワークを使用してアンドロイドでテストアプリを構築しましたが、問題はAJAXリクエストです。 jQuery AJAXを使用してリモートサーバーからデータを取得します1つのリクエストが完了してデータが残っているように見えます。サーバーからの応答を変更すると、その変更は新しいリクエストに反映されません。ここでは、アプリケーション自体でのAJAX要求である:ここでサーバーデータがAJAXリクエストからPhoneGapフレームワーク上に伝播しない

$.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); 

私の質問は、なぜ、ありますか?なぜ変更はアプリケーションから反映されませんか?

答えて

4

をjQueryのAJAXは$.getJSON()のような速記AJAX要求のサーバの応答をキャッシュしないようにするために、セットアップにグローバルを持っていますそれ以降のAJAXリクエストにはではなく、にサーバー応答をキャッシュします。これは$.ajaxSetup()を使用して行うことができます。

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スクリプトのbegginingでこれを追加してくださいその動作を回避するには :

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"); 
+0

運を次のようにさらにサーバ応答のキャッシュを防ぐために、この

$.ajaxSetup({ cache: false }); 

のようにそれを行うには、Tincho戻すは彼の応答に投稿されたヘッダーを使用、彼らがしています。良い示唆。私はそれがさらにラインの下に役立つと確信しています。 – nkcmr

関連する問題