2011-12-09 19 views
6

Sto usando jQuery carico per ottenere un div su una pagina diversa e inserirlo nella mia pagina. somthing come questo:carico jquery con linea javascript

$('#mydiv').load("/Pages/grid2.aspx" + " #otherpagediv"); 

Nel div dall'altra pagina, c'è javascript nel div. Il javascript non viene visualizzato, solo il contenuto HTML. C'è un modo per ottenere tutto nel div specificato?

+0

Ci può fornire con il Javascript del DIV che viene caricato? Il codice è iniziale? – Theodore

risposta

0

JavaScript dovrebbe anche venire lungo la risposta. Devi assicurarti che /Pages/grid2.aspx debba inviare la risposta richiesta dal lato server. Anche l'URL che hai passato al metodo load ha uno spazio al suo interno. Penso che dovresti correggerlo e provarlo.

$('#mydiv').load("/Pages/grid2.aspx" + "#otherpagediv"); 
+0

questo è in realtà dalla progettazione della funzione 'load'. Lo spazio è usato per caricare una parte della pagina. –

+0

@Alexander - Non lo sapevo, bello sapere grazie. – ShankarSangoli

2

Da documentation:

Nota: Quando si chiama .load() utilizzando un URL senza un suffisso di selezione espressione, il contenuto viene passato a .html() prima di essere scritti rimosso. Questo esegue i blocchi di script prima che vengano scartati.

Se .load() viene comunque chiamato con un'espressione selettore aggiunte all'URL , gli script vengono eliminati prima della DOM essendo aggiornato, motivo per cui essi non sono mai eseguiti.

6

Questo funziona:

$.get('/Pages/grid2.aspx', function (data) { 
    $('#mydiv').html($('<div></div>').html(data).find('#otherpagediv').clone()); 
}); 

demo dal vivo:http://jsfiddle.net/FRbnD/4/show/light/

Per comprendere la demo, visualizzare il codice sorgente di entrambe le pagine che lo compongono:
codice Fonte della demo: http://jsfiddle.net/FRbnD/4/
Codice sorgente "altra pagina": http://jsfiddle.net/MWkSj/1/

L'idea è di recuperare l'altra pagina tramite una richiesta $.get, quindi trovare #otherpagediv e clonarlo. Quindi si aggiunge il clone allo #mydiv. Se inserisci un clone nel DOM e se quel clone contiene un elemento SCRIPT, quello script verrà eseguito.

+0

Questo dovrebbe essere sicuramente aggiunto alla pagina API jQuery! –

0

http://www.coursesweb.net/ajax/execute-javascript-code-ajax-response_t

Si potrebbe trovare utile questa pagina, ho usato lo script, utilizza eval()

// this function create an Array that contains the JS code of every <script> 
// then apply the eval() to execute the code in every script collected 
function parseScript(strcode) { 
var scripts = new Array();   // Array which will store the script's code 

// Strip out tags 
while(strcode.indexOf("<script") > -1 || strcode.indexOf("</script") > -1) { 
var s = strcode.indexOf("<script"); 
var s_e = strcode.indexOf(">", s); 
var e = strcode.indexOf("</script", s); 
var e_e = strcode.indexOf(">", e); 

// Add to scripts array 
scripts.push(strcode.substring(s_e+1, e)); 
// Strip from strcode 
strcode = strcode.substring(0, s) + strcode.substring(e_e+1); 
} 

// Loop through every script collected and eval it 
for(var i=0; i<scripts.length; i++) { 
try { 
    eval(scripts[i]); 
} 
    catch(ex) { 
    // do what you want here when a script fails 
    } 
} 
} 
Problemi correlati