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

    [ajax] interpretazione javascript

    ciao

    sto sviluppando una applicazione web

    Ho un menu che invia richieste ad una applicazione web, questa applicaziore ritorna codice html, la funzione javascript recupera l'html e lo mette nel contenuto di un div.

    Il tutto funziona senza problemi, ho notato però che quando nella risposta html è contentuto anche del codice js questo non viene eseguito, sapete dirmi se c'è un modo per aggirare il problema?

    Esempio:

    Richiesta->
    <-Risposta ("

    Ciao</p>") == TUTTO OK

    Richiesta->
    <-Risposta ("

    Ciao</p><script language=\"javascirpt\">alert('pippo')</script>") == HTML OK, alert non generato

    se invece faccio la richiesta da url con il browser senza passare da ajax funziona tutto.

    In sostanza, come posso fare per risolvere?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    questo è un esempio che ho provato con IE7, Firefox2 e Opera9:

    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>
        <title>Pagina senza titolo</title>
        <script type="text/javascript" src="../js/libreria.js"></script>
    <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    function Button1_onclick() 
    {
        //faccio la richiesta alla pagina a.asp che restituisce
        //
    
    Ciao</p><_script language=\"javascript\">alert('pippo')</_script>
        ajax("a.asp", onload);
        function onload()
        {
    		//t contiene la risposta
    		var t = this.request.responseText;
    		
    		//execJS esegue javascript contenuto in t e restituisce
    		//t senza javascript
    		t = execJS(t);
    		
            //finalmente metto t 'pulito' dento il div
            $("div1").innerHTML = t;
            
        }
    }
    
    
    
    // ]]>
    </script>
    </head>
    <body>
        <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
        <div id="div1"></div>
    </body>
    </html>

    codice:
    //-----------------------------------------------------
    //valuta il codice javascript e restituisce la stringa
    //senza codice
    //-----------------------------------------------------
    function execJS(t)
    {
        var p1 = 0, p2 = 0, p3 = 0, p4 = 0;
        p1 = t.indexOf("<" + "script", 0);
        if(p1 == -1) return t;
        
        p2 = t.indexOf(">", p1 + 7) + 1;
        p3 = t.indexOf("<" + "/script>", p2);
        p4 = p3 + 9;
        
        var c = t.substring(p2, p3);
        var s = document.createElement("script");
        s.type = "text/javascript";
        s.text = c;
        document.getElementsByTagName("head")[0].appendChild(s);
        
        t = t.substring(0, p1) + t.substr(p4);
        return execJS(t);
    
    }
    Pietro

  3. #3
    ottimo!

    grazie mille!
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  4. #4
    ok ho capito il funzionamento.
    ma nel mio caso lo script fa il document.write di un codice (x la selezione di una data)... e mi serve che sia in quella posizione e nn nell'header... come fare?

  5. #5
    Ciao a tutti!

    Anch'io ho lo stesso problema di Nik600. Finchè con Ajax mi servo di risposte fatte da tag html semplici su file .asp da "sostituire" nei "<div>" della mia pagina web va tutto bene, ma se, ad esempio, inserisco dei tag classici per JavaScript "<script>" per implementare funzioni anche molto semplici (come le "document.write"...), non vengono prese in considerazione e il codice viene saltato.

    Come mai?
    Grazie a chiunque mi risponda!

  6. #6
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Dunque ho utilizzato il tuo esempio ed ora ottengo una cosa del genere:
    Codice PHP:
    function caricaBox(nomeFile) {

      
    // variabili di funzione
      
    var
        
    // assegnazione oggetto XMLHttpRequest
        
    ajax assegnaXMLHttpRequest(),
        
    // assegnazione elemento del documento
        
    elemento prendiElementoDaId("box"),
        
    // risultato booleano di funzione
        
    usaLink true;
      
      
    // se l'oggetto XMLHttpRequest non è nullo
      
    if(ajax) {
        
    // il link al file non deve essere usato
        
    usaLink false;

        
    // impostazione richiesta asincrona in GET
        // del file specificato
        
    ajax.open("get"nomeFiletrue);

        
    // rimozione dell'header "connection" come "keep alive"
        
    ajax.setRequestHeader("connection""close");

        
    // impostazione controllo e stato della richiesta
        
    ajax.onreadystatechange = function() {
          
          
    // verifica dello stato
          
    if(ajax.readyState === readyState.COMPLETATO) {    
            
    // verifica della risposta da parte del server
            
    if(statusText[ajax.status] === "OK")
              
    // operazione avvenuta con successo
              
    elemento.innerHTML execJS(ajax.responseText);
            else {
              
    // errore di caricamento
              
    elemento.innerHTML "Impossibile effettuare l'operazione richiesta.
    "
    ;
              
    elemento.innerHTML += "Errore riscontrato: " statusText[ajax.status];
            }
          } 
        }

        
    // invio richiesta
        
    ajax.send(null);
      }
       
      return 
    usaLink;

    Ora se testo la pagina e carico i contenuti nel div, non mi vengono interpretati i JS che sono caricati insieme alla pagina nel div.
    C'è qualcos'altro? :master:

  7. #7
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Ho ripreso un vecchio argomento, sono cambiate un po di cose e sto cercando di interpretare la pillola, ma non mi funziona ancora:
    Situazione:

    Codice PHP:
    <script type="text/javascript"><!--//

    function caricaBox(stringIdBox) {  
        var 
    url_action string

        new 
    Ajax.Request(url_action, {onComplete:showResponse} ); 
        function 
    showResponse(originalRequest)      
            { 
            var 
    originalRequest.responseText
            
    execJS(t);
            $(
    IdBox).innerHTML t
            } 
    return 
    false;


    function 
    execJS(t)
    {
        var 
    p1 0p2 0p3 0p4 0;
        
    p1 t.indexOf("<" "script"0);
        if(
    p1 == -1) return t;
        
        
    p2 t.indexOf(">"p1 7) + 1;
        
    p3 t.indexOf("<" "/script>"p2);
        
    p4 p3 9;
        
        var 
    t.substring(p2p3);
        var 
    document.createElement("script");
        
    s.type "text/javascript";
        
    s.text c;
        
    document.getElementsByTagName("head")[0].appendChild(s);
        
        
    t.substring(0p1) + t.substr(p4);
        return 
    execJS(t);

    }
    </script> 
    Bene, ora carico una pagina tramite link nel mio div con:
    Codice PHP:
    [url="boxes/page.php"]vai[/url
    La pagina caricata non interpreta il seguente codice Javascript
    Codice PHP:
    <script type="text/javascript">
    ddtabmenu.definemenu("ddtabs2"0//initialize Tab Menu 
    </script> 
    Sia che uesto sia nella pagina da caricare, sia nell'index.

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non ne ho la più pallida idea perchè non vada.
    So solo che ho preso il tuo codice e va

    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>
    
    <!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 runat="server">
        <title></title>
        <script type="text/javascript" src="../js/prototype.js"></script>
    
    <script language="javascript" type="text/javascript">
    // <!CDATA[
    
        function caricaBox(string, IdBox) {
            var url_action = string;
    
            new Ajax.Request(url_action, { onComplete: showResponse });
            function showResponse(originalRequest) {
                var t = originalRequest.responseText;
                t = execJS(t);
                $(IdBox).innerHTML = t;
            }
            return false;
        }
    
        function execJS(t) {
            var p1 = 0, p2 = 0, p3 = 0, p4 = 0;
            p1 = t.indexOf("<" + "script", 0);
            if (p1 == -1) return t;
    
            p2 = t.indexOf(">", p1 + 7) + 1;
            p3 = t.indexOf("<" + "/script>", p2);
            p4 = p3 + 9;
    
            var c = t.substring(p2, p3);
            var s = document.createElement("script");
            s.type = "text/javascript";
            s.text = c;
            document.getElementsByTagName("head")[0].appendChild(s);
    
            t = t.substring(0, p1) + t.substr(p4);
            return execJS(t);
    
        }
    // ]]>
    
    </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <input id="Button1" type="button" value="button" onclick="caricaBox('?ajax_comando=1&nome=pietro','div');" />
            
    
    
            vai
            
    
    
            <div id="div"></div>
        </div>
        </form>
    </body>
    </html>
    codice server
    codice:
    Option Strict On
    Imports l = libreria.ModuloWeb
    
    Partial Class prove_a
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim ajax_comando As String = l.RequestParams("ajax_comando")
            If ajax_comando = "1" Then
                Me.Response.Write("Ciao, Mondo!")
                Me.Response.Write("<script type=""text/javascript"">alert(""Codice javascript inviato con ajax""); /*initialize Tab Menu*/</script>")
                Me.Response.End()
            End If
        End Sub
    End Class
    Pietro

  9. #9
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Originariamente inviato da pietro09
    non ne ho la più pallida idea perchè non vada.
    So solo che ho preso il tuo codice e va

    [code]<%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>


    <form id="form1" runat="server">
    queste devo inserirle?

    E il codice server che mi hai riportato cosa serve?

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Certo che devi inserirlo, ..., se usi asp.net

    ps. non esiste certo solo php

    :master: allora, a parte gli scherzi, usa il codice html che vedi.
    Il codice server Me.Response.Write credo si traduca in php, echo :master:

    ciao
    Pietro

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.