2016-06-15 18 views
4

私のAngularJSアプリでは、以下のようにHTTP GETリクエストを送信しています。キャッシュデータを返すAngularJS HTTP GETリクエスト

MyService.HttpReq("testUrl", "GET", null); 

HttpReq方法は、サービスで定義され、以下のように実装されています。すべての

this.HttpReq = function(URL, method, payload) 
{ 
    $http({ 
     url: URL, 
     method: method, 
     cache: false, 
     data: postData, 
     headers: { 
      'Content-Type': 'application/json', 
     } 
    }).success(function(response) 
    { 
     console.log("Success: "+JSON.stringify(response)); 

    }).error(function(data, status) 
    { 
     console.error("Error"); 

    }); 
} 

まず、これはAngularJSでHTTPリクエストを送信する正しい方法ですか?
私が直面している問題は、キャッシュされたデータをレスポンスとして取得し、HTTPリクエストがサーバーにヒットしないことです。何が問題なの?コメントと答えを1として

UPDATE

私は以下のように私のHTTP要求コードを更新し、それでも同じ問題を取得しています。

this.HttpReq = function(URL, method, payload) 
{ 
    $http({ 
     url: URL, 
     method: method, 
     cache: false, 
     data: payload, 
     headers: { 
      'Content-Type': 'application/json', 
      'Cache-Control' : 'no-cache' 
     } 
    }). 
    then(
     function(response) 
     { 
      var data = response.data; 
      console.log("Success: "+JSON.stringify(data)); 
     }, 
     function(response) 
     { 
      var data = response.data || "Request failed"; 
      var status = response.status; 
      console.error("Error: "+JSON.stringify(data)); 
     } 
    ); 
} 
+0

を送信しても問題がないことを確認してください? GETかPOSTか両方か? –

+0

私はGETとPOSTの両方を使用します – User7723337

+0

.successと.errorは非推奨です。代わりに2つのコールバック関数を使用してください。 – gyc

答えて

1

だけキャッシュを追加します:偽属性を設定オブジェクトに。

https://docs.angularjs.org/api/ng/service/$http#caching

また、あなたはヘッダを追加することはできません。 'のCache-Control': 'ノーキャッシュ'

+0

私の更新された質問を確認してください、私はちょうど 'cache:false'で試しましたが、まだキャッシュされたデータが見えます。 – User7723337

+0

$ httpはデフォルトでデータをキャッシュしません。 – gyc

+0

私がやっているコールは順番に、成功して1つのコールバックで別のリクエストを送信しています、それは正しい方法ですか? – User7723337

2

IEブラウザは、AJAXは、我々は、応答にキャッシュ制御ヘッダを追加しても、要求を取得キャッチします。私が問題を解決するために見つけた唯一の方法は、リクエストにランダムなパラメータを追加することです。 APIは、あなたが余分なパラメータあなたはHttpReq方法で使用するのですか何方法

MyService.HttpReq("testUrl?ts=" + Date.now(), "GET", null); 
+0

OH!私はテストのためにクロムを使用していますが、まだ私はこの問題に直面しています。 – User7723337

+0

要求にキャッシュ制御ヘッダーを追加することはありません。サーバー側の応答ヘッダーに設定する必要があります。例のようにタイムスタンプのようなランダムなパラメータを追加してみてください。それは動作するはずです。 –

関連する問題