2012-07-20 17 views
10

non so questo può essere duplicato, ma,Rimuovere ajax contenuto caricato e sceneggiatura

Io uso Ajax nel mio sito web, ora in risposta a tale invito invio alcune html e script.

Quindi sostituisco i dati con alcuni dei miei elementi presenti nella pagina.

Ora, desidero effettuare una seconda chiamata ajax, quindi ho rimosso il contenuto html dal div caricato. Poi di nuovo una chiamata ajax restituisce qualche altro codice html e script. Ma alcune volte è conflitto tra script precedente e script appena arrivati.

EX. prima risposta sostituisco html e script con qualche elemento: $('.ma_right_main').html(response.data);

quindi prima di 2 ° convocazione I rimuovere i contenuti: $('.ma_right_main').html('');

seconda risposta sostituisco html e script con qualche elemento: $('.ma_right_main').html(response.data);

ma dopo sostituisco lo script 2a volta restituito dalla prima volta ancora lì in esecuzione. Voglio rimuoverlo proprio come posso rimuovere il contenuto HTML.

+0

+1 domanda interessante –

risposta

3

Non penso che una volta che un browser abbia caricato uno script che può essere rimosso (questo non significa che non puoi rimuoverlo dal dom, ma sarebbe ancora esistente.) Ad esempio se tu avessi un script con variabile x, caricare la pagina in modo che lo script venga caricato, rimuovere lo script dal dom, x che penso sarebbe ancora definito.

Ci sono modi per aggirare questo però, se ogni script caricato dinamicamente fosse il suo oggetto, quando "lo scarico" è possibile impostare l'oggetto su null. Questa è una soluzione che ho incontrato un po 'indietro quando cercavo una soluzione simile.

Trovato il riferimento mi riferivo: https://stackoverflow.com/a/1346903/1475461

3

Gli script non sono naturalmente eseguiti affatto. (L'impostazione .innerHTML non eseguirà script all'interno dell'HTML).

jQuery trova manualmente tutti gli elementi di script nell'html, li rimuove e li valuta. Pertanto, se si utilizza .html e non si desidera eseguire gli script, non includere gli script nell'html.

E non è possibile disattivare gli script, quindi è necessario rifattorizzare il sito Web tenendo conto di ciò. Non includere un nuovo codice nelle risposte se possono entrare in conflitto con quelle precedenti. Usa il codice generico che viene sempre caricato.

+0

Significa che se uso .innerHTML, verrà sostituito solo il contenuto HTML. E nessun effetto della sceneggiatura poi dopo. – Parixit

+1

@ user631652 si intendo, se si esegue 'element.innerHTML =" ";' lo script non viene eseguito. Vedi http://jsfiddle.net/TTH4R/ – Esailija

Problemi correlati