2016-12-26 43 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

我认为它表示请求的大小,以字节为单位。 –