2016-12-26 22 views
1

BreezeJsのPOST Ajax呼び出しでは、データを取得するためのパラメーターをブラウザーがキャッシュします。 "cache: false"属性は機能しません。また、$.ajaxSetup({ cache: false });オプションも機能しません。どのように起こるのを防ぐには?代わりにGETリクエストを行う必要がある場合は、どうすれば実行できますか?ここに私のコードの一部...BreezeJs - パラメーターを使用したAjax呼び出し、キャッシングなし

JS

var id = 100; 
var serviceName = '/breeze/sample'; 
var ajaxImpl = breeze.config.getAdapterInstance('ajax'); 

ajaxImpl.ajax({ 
    type: 'POST', 
    url: serviceName + '/getdata', 
    data: { dataid: id }, 
    success: function(data) { 
     // Do something with data 
    } 
}); 

ApiController事前に

[HttpPost] 
[Authorize("User")] 
[ActionName("getdata")] 
public object GetData(HttpRequestMessage request) 
{ 
    if (!IsAuthorized()) // Pre-defined function 
     throw new HttpResponseException(HttpStatusCode.Unauthorized); 

    var data = request.Content.ReadAsFormDataAsync().Result; 
    var dataId = data["dataid"]; 
    var query = "sp_getdata @id"; // Pass parameter @id to stored procedure "sp_getdata" 
    var id = new SqlParameter("@id", dataId); 

    return unitOfWork.Context().ExecuteStoreQuery<GetData>(query, id).ToList(); 
} 

おかげです。

答えて

1

GETとPOSTでbreezeを実行します。

Global.asaxはありますか?これを追加してください.../api /または/ breeze /を探しているのが唯一の方法だとはっきりしませんが、あなたの状況に合わせて調整してください。

protected void Application_PreSendRequestHeaders(object sender, EventArgs e) 
{ 
    // Never Cache API (Web API or Breeze.Sharp) Data Requests 
    if (Request.RawUrl.Contains("/api/") || Request.RawUrl.Contains("/breeze/")) 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
} 
+0

ありがとうございます。クイック質問... Google Chromeの開発ツール|ネットワーク、 "[データ量]は実際には何を意味するのですか?"私はいつもそれがキャッシュに格納されたデータの量を表していると思っています... – RipHamilton

+0

私はそれがバイトの要求のサイズを表すと思います。 –

関連する問題