2016-04-18 7 views
2

私はAjaxコールをいくつかのデータを返すボタン・プレスから行い、グリッドを作成します。最初に関数が呼び出され、Ajax呼び出しが行われると、データが返され、グリッドが表示されます。幸せな日々。 データ・パラメータが変更されていない関数への後続の呼び出しでは、Ajaxコールがサーバーに送信されず、関数は成功したコールの結果がすでに入力された状態で「成功」にスキップします。2番目のAjaxコールに既に成功結果が設定されています

「postParameters」のいずれかを変更すると、Ajax呼び出しが成功し、データが更新されます。

function btnClick(){ 
    //blah blah 
    getGridData(); 
} 

function getGridData() { 
    var postParameters = 
    { 
     SiteID: "@Model.SiteID", 
     DateFilterFrom: $("#datepickerFrom").val(), 
     DateFilterTo: $("#datepickerTo").val(), 
     CustomerFilter: $("#customers").val() 
    }; 
    $.ajax({ 
     url: "@Url.Action("SalesForecast_Read", "Planning")", 
     type: "GET", 
     contentType: "application/json; charset=utf-8", 
     data: postParameters, 
     dataType: "json", 
     success: function (results) { 
      createHighlights(results.Highlights); 
      createGrid(results.Entries); 
     }, 
     error: function (e) { 
      alert(e.responseText); 
     } 
    }); 
}; 

私が行方不明です重要なJavascriptの概念が存在する必要があります知っているが、私はちょうどそれを爪することができるように思わカント。 誰かが正しい方向に私を置くのを助けることができますか?

+0

私はここにキャッシュの問題があると思います。 ajaxクエリにキャッシングがないことを具体的に尋ねるオプションがあるはずです –

+0

実際には:cache:false、 –

答えて

1

は、あなたがキャッシュを無効にしようとしています。

$.ajax({ 
    url: "@Url.Action("SalesForecast_Read", "Planning")", 
    type: "GET", 
    cache: false, 
    contentType: "application/json; charset=utf-8", 
    data: postParameters, 
    dataType: "json", 
    success: function (results) { 
     createHighlights(results.Highlights); 
     createGrid(results.Entries); 
    }, 
    error: function (e) { 
     alert(e.responseText); 
    } 
}); 

説明

キャッシュを基本的に呼び出しの戻り値を保存することにより、サーバーへのコールを保存しようとします。

これは、クエリのハッシュをキーとして保存するので、2番目のクエリを同じにすると、最初に返された値であるキャッシュから直接値が返されます。

無効にすると、サーバーにすべてのクエリを要求します。

+0

は扱われました、多くの感謝ですAdrien –

0

はウルAJAX呼び出しでこれを追加しよう:

$.ajax({ 
    cache: false, 
    //other options... 
}); 

これは、AJAXたびのリコールを強制します。 詳細については、次のリンクを確認してください。 api.jquery.com/jquery.ajax

+0

何がしますか?これに関するすべてのドキュメント?成功の結果はどのように役立ちますか? – dakab

+0

明らかに、それはajaxリクエストのキャッシュを無効にし、毎回ajaxの呼び出しを強制します。 さらに詳しい情報については、 http://api.jquery.com/jquery.ajax/ – Phoenician

+0

情報を追加して回答を編集してみませんか?それは、答えの質を大幅に向上させます。 – dakab

0

あなたはajaxリクエストにキャッシュを追加できます。

$.ajax({ 
    url: "@Url.Action("SalesForecast_Read", "Planning")", 
    type: "GET", 
    contentType: "application/json; charset=utf-8", 
    data: postParameters, 
    dataType: "json", 
    cache:false, 
    success: function (results) { 
     createHighlights(results.Highlights); 
     createGrid(results.Entries); 
    }, 
    error: function (e) { 
     alert(e.responseText); 
    } 
}); 

IEはあなたに聞こえないかもしれません。そのために、POSTパラメータにフィールドを追加することができます。ここでは、現在の時刻をミリ秒単位で追加するため、IEでもキャッシュされません。

関連する問題