PDA

View Full Version : [AJAX + JAVASCRIPT] Problema con script nella response


durbans
10-04-2007, 11:22
Non so se si puo' fare una cosa del genere.
In pratica vorrei mettere in un <div> gestito con AJAX uno script javascript, in modo tale che dinamicamente il server mi possa tornare script diversi.

<div id="AJAXDIV">

<!-- CODICE HTML -->

<script language="javascript">

function f() {
...
}

</script>
</div>

e la risposta del server (che va a sostituire il contenuto del DIV) sarebbe del tipo:



<!-- CODICE HTML -->

<script language="javascript">

function f() {
...
}

</script>

Con la function f che fa cose diverse.

Da alcune prove mi pare tuttavia che mentre il codice HTML viene aggiornato correttamente, nel DIV rimanga il JAVASCRIPT vecchio che invece vorrei "sovrascrivere" con quello nuovo tornato dal server.

Qualcuno mi puo' aiutare ?

tglman
10-04-2007, 14:48
Si si puņ fare č semplice !!!


<div id="AJAXDIV"></div>



function esegui_richiesta_riempi()
{
//esegue la richiesta.
document.getElementById("AJAXDIV").innerHTML=request.responseText;
}


Tutto Chiaro??

durbans
10-04-2007, 17:00
Anchio ho provato cosi' ma mentre il contenuto HTML del DIV viene rimpiazzato (all'inizio nel DIV c'e' gia' del codice HTML e uno script) , lo script rimane quello vecchio e quello nuovo non viene caricato.

Ho provato anche la variante:

<div id="AJAXDIV">

SOLO TAG HTML

</div>

<script id="SCRIPTDIV">

SOLO CODICE JAVASCRIPT

</script>

e

var splitted = request.responseText.split("<separator>");

document.getElementById("AJAXDIV").innerHTML=splitted[0];
document.getElementById("SCRIPTDIV").innerHTML=splitted[1];

rimpiazzando lo script a parte , ma non funziona (<separator> separa il corpo
di AJAXDIV e SCRIPTDIV nella risposta), nel senso che AJAXDIV viene rimpiazzato
ma SCRIPTDIV no (ci rimane lo script che c'era inizialmente)

Credo che ci siano delle limitazioni nelle modifica dei JAVASCRIPT; cercando in rete pare che si possa aggiungere / modificare uno script ma solo mettendo il corpo dello script in un file esterno.