Uso il metodo ajax di jquery per caricare dinamicamente alcuni snippet html dal server e inserire lo snippet in un div. All'interno dello snippet ci sono alcuni tag <script>
per script esterni.Perché jquery invia la richiesta GET per un tag script caricato in modo dinamico?
Ho guardato l'attività di rete nella barra degli strumenti di Chrome mentre effettuavo la richiesta di ajax e ho trovato che le richieste GET per i tag di script sono state aggiunte con qualcosa come ?_=1234567890
. Ho anche notato l'iniziatore della richiesta GET è jquery. So che jquery lo fa per le richieste AJAX per evitare di usare la versione cache, ma voglio che lo script sia memorizzato nella cache.
Ciò che mi ha davvero sorpreso è che i tag <script>
vengono recuperati da jquery con ajax. Quando inserisci un tag <script>
in DOM, il browser dovrebbe essere responsabile del caricamento e dell'esecuzione di esso? Perché jQuery intraprende l'azione qui?
Se ignoro jquery e utilizzo js normale per aggiungere un tag <script>
a DOM, il browser lo caricherà e lo analizzerà, giusto? Perché il browser non fa questo e lascia che jquery prenda il controllo?
============== codice =============
codice per caricare il frammento di codice HTML:
var url = "/"+modulename+"/settings/"+this.selectedProduct.id;
$.get(url, null, function(snippet){
$("div#content").empty().html(snippet);
}
Il frammento di codice HTML:
<script type='text/javascript' src="http://www.staticcdn.org/somelib.js"></script>
<script>
<!--some html rendering code that depends on somelib-->
</script>
E 'più una questione di, perché jQuery prendere il sopravvento e non lasciare che il browser fare questo? – Scimonster
Lo fa se si imposta l'opzione cache in $ .ajax su false? – adeneo
se il tuo '
Date un'occhiata nel doc jquery per l'Ajax: http://api.jquery.com/jQuery.ajax/ e notare l'opzione
datatype
$.get
utilizzare$.ajax
. Se non vuoi il?_=...
devi chiamare il$.ajax
da solo.È anche il mio dare un'occhiata a scelta
cache
fonte
2014-04-06 07:44:03 drkunibar
Quello che ottengo con ajax è html (datatype), non puro script. Ma jquery si prende la libertà di caricare il tag script all'interno e valutarlo. Nel suo documento, dice "html": restituisce HTML come testo normale; i tag script inclusi vengono valutati quando inseriti nel DOM. - Ma non ho trovato alcuna opzione per disattivarlo. – NeoWang
Questa è una funzionalità del tuo browser. Se inserisci un tag '
Problemi correlati