2012-09-01 30 views
23

進一步使用我想下載文件,這是我找到的最好方式,但是當我看到被beforeSend事件創建日誌,該網址已經被將queryString像修改:爲什麼一些數字被添加到ajax對象的url,以及如何刪除它們?

http://blabla.com/test.swf?_=1346484617818 

數字也是隨機的。

我不知道爲什麼會發生這種情況!

var url = 'http://blabla.com/test.swf'; 

$(document).ready(function() { 
      $.ajaxSetup({ 
      'beforeSend':function() { 
          console.log(this.url);} 
      }); 

     $.ajax({ 
      url:url, 
      dataType:"script", 
      }); 
}); 

回答

31

只要使用cache:true。 jQuery會自動爲你添加一個時間戳到URL的末尾,確保ajax請求永遠不會被緩存。

從jQuery的文檔

默認:真,假的的dataType「腳本」和「JSONP」
如果設置爲false,這將迫使請求的頁面不被瀏覽器緩存。 將緩存設置爲false還會將查詢字符串參數 「_=[TIMESTAMP]」附加到URL。

$.ajaxSetup({'cache':true}); 

Jquery Ajax Docs

+1

你是在正確的道路,但在錯誤的方向;)http://api.jquery.com/jquery.ajax/ – Andreas

+0

可以請你解釋一下? – rahul

+4

對於數據類型_script_和_jsonp_ jQuery默認使用'cache:false',併爲此添加'_ = [TIMESTAMP]'來防止緩存。爲了防止這種情況,你必須使用'cache:true'。 – Andreas

相關問題