2012-09-01 9 views
23

I Wanna file di download per un ulteriore uso, questo è il modo migliore che ho trovato, ma quando vedo il registro che viene creato da beforeSend evento, l'URL è stato modificato da un queryString come:Perché alcuni numeri vengono aggiunti all'URL di un oggetto Ajax e come rimuoverli?

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

Anche i numeri sono casuali.

Mi chiedo perché questo succede !!!!

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

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

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

risposta

31

Utilizzare solo cache: true. jQuery aggiungerà automaticamente un timestamp alla fine dell'URL per te, assicurandoti che le richieste di ajax non vengano mai memorizzate nella cache.

da docs jQuery

predefinito: vero, falso per dataType 'script' e 'jsonp'
Se impostato su false, costringerà le pagine richieste per non essere memorizzate nella cache dal browser . L'impostazione della cache su false aggiunge anche un parametro stringa di query, "_=[TIMESTAMP]", all'URL.

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

Jquery Ajax Docs

+1

Sei sulla strada giusta, ma nella direzione sbagliata;) http://api.jquery.com/jquery.ajax/ – Andreas

+0

si può spiegare in che modo? – rahul

+4

Per i tipi di dati _script_ e _jsonp_ jQuery utilizza 'cache: false' come impostazione predefinita e quindi aggiunge' _ = [TIMESTAMP] 'per impedire la memorizzazione nella cache. Per evitare ciò, dovrai usare 'cache: true'. – Andreas

Problemi correlati