Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [AJAX] Prototype Request ma no script

    Salve, sto provando un po' di basi di Ajax, ma ci sono delle cose che non mi tornano.
    Ho una pagina con un div su cui voglio caricare il contenuto di un'altra pagina
    Pagina di partenza:
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script type="text/javascript" src="scripts/prototype-1_6_0_3.js"></script>
    <script type="text/javascript" src="scripts/scriptaculous.js"></script>
    <script language="javascript">	
    	
    	function carica(pagina) {
    		if(pagina) {
    			var oggi = new Date();
    			var oOptions = {
    				method: "get",
    				onSuccess: function (oXHR, oJson) {
    					var divLoadArea = document.getElementById("loadarea");
    					divLoadArea.innerHTML = oXHR.responseText;  
    					var divNewPage = document.getElementById("divPage");
    					divNewPage.style.display = "none";
    					document.getElementById("action").appendChild(divNewPage);
    					divLoadArea.innerHTML = "";     
    				},
    				onFailure: function (oXHR, oJson) {
    					alert("errore");
    				}
    			};
    			var oRequest = new Ajax.Request(pagina+"&"+oggi.getTime(), oOptions);
    		}
    	}
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Test</title>
    </head>
    
    <body>
    
    
    
    <div style="clear: left;">
    	Carica
    </div>
    <div id="loadarea"></div>
    <div id="action"></div>
    
    </body>
    </html>
    Mentre la pagina che vado a caricare (pagina.asp) ha questo dentro:
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <h1>Pagina ID <%=Request.QueryString("ID")%></h1>
    Con alert
    <script language="javascript">
    	function apri() {
    		alert("Fatta");
    	}
    </script>
    Banalmente mi viene fuori il contenuto ma non funziona quella banale funzione javascript che sta dentro la pagina che carico. Come si fa ad importare anche degli script?
    Grazie mille.
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2
    Perché di default lo script in una string HTML ottenuta con AJAX non viene valutata, è necessario usare:

    http://www.prototypejs.org/api/string/evalScripts
    I DON'T Double Click!

  3. #3
    Sorry... ho visto ma non ho mica capito come integrarlo. O meglio ho fatto così
    codice:
    ...
    divLoadArea.innerHTML = oXHR.responseText.evalScripts();  
    ...
    Ma non sembra funzioni...
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  4. #4
    no devi solo fare:

    oXHR.responseText.evalScripts();


    ma questo esegue quello che c'è tra i tag <script> .. </script>

    devi implementare la definizione dell'evento con DOM1 o DOM2 perchè sia eseguita:

    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <h1>Pagina ID <%=Request.QueryString("ID")%></h1>
    Con alert
    <script language="javascript">
    	function apri() {
    		alert("Fatta");
    	}
            $('MyAlert').observe('click', apri);
    </script>
    Questo dovrebbe andare
    I DON'T Double Click!

  5. #5
    codice:
    	function carica(pagina) {
    		if(pagina) {
    			var oggi = new Date();
    			var oOptions = {
    				method: "get",
    				onSuccess: function (oXHR, oJson) {
    					var divLoadArea = document.getElementById("loadarea");
    					divLoadArea.innerHTML = oXHR.responseText.evalScripts();  
    					var divNewPage = document.getElementById("divPage");
    					divNewPage.style.display = "none";
    					document.getElementById("action").appendChild(divNewPage);
    					divLoadArea.innerHTML = "";     
    				},
    				onFailure: function (oXHR, oJson) {
    					alert("errore");
    				}
    			};
    			var oRequest = new Ajax.Request(pagina+"&"+oggi.getTime(), oOptions);
    		}
    	}
    e ho modificato pagina.asp come mi hai indicato, ma non funziona. Non capisco dove sbaglio.
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  6. #6
    ma hai letto il link che ti ho mandato!??!

    evalScripts() -> [returnedValue...]

    Evaluates the content of any script block present in the string.Returns an array containing the value returned by each script.

    Ma poi, perché non usi l'updater?


    Aggiunta:
    ma scusa, che cosa dovrebbe fare il tuo codice?

    document.getElementById("divPage"); non c'è nessun elemento con questo ID
    I DON'T Double Click!

  7. #7
    Ho provato anche con l'Updater (che tra l'altro mi sembra più veloce per questa cosa), ma non riesco a portarmi dietro il codice javascript che ho nella pagina da cui vado ad attingere... davvero ho visto il link che mi hai segnalato, ma non capisco, come mi dovrei comportare poi con questa array?
    Scusa ma non ci arrivo...
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  8. #8
    Spiegami COSA vuoi fare.
    I DON'T Double Click!

  9. #9
    Vorrei caricare su un div una pagina al cui interno c'è del codice javascript e vorrei che quel codice fosse funzionante.
    Il codice della pagina da acquisire è in linea perchè potrà essere dentro un ciclo ASP.
    Semplificando

    test.asp

    <html>
    <script>
    function carica(nomepagina) {
    //...funzione che usi Ajax.Updater
    }
    </script>
    <did id="action"></div>
    Carica
    </html>




    pagina.asp

    <html>
    <script>
    function ciao() {
    alert("ciao");
    }
    </script>
    Saluta
    </html>



    Vorrei che quel link che importo da pagina.asp funzionasse. Non mi chiedere di mettere la funzione ciao() dentro test.asp perchè poi mi serviranno funzioni diverse a seconda dell'esecuzione della pagina.
    Grazie
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  10. #10
    allora fai così:


    Codice PHP:
    function carica(page)
    {
       new 
    Ajax.Updater('action'page, {
          
    method 'get',
          
    onComplete : function(transport){
             
    transport.responseText.evalScripts();
          }
       }

    e metti il codice che ti avevo postato nella pagina ASP che vai a chiamare
    I DON'T Double Click!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.