2016-12-26 45 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運行微風。

您是否擁有Global.asax?把它添加到它...不知道如果尋找/ api /或/微風/將是唯一的方式,但適應你的情況。

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

我認爲它表示請求的大小,以字節爲單位。 –