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

    [AJAX] caricamento in DIV errati con IE

    Il mio problema è semplice semplice.
    Ho una funzione AJAX, LEGGI_PAGINA(x,y,....,z), la quale passando i valori desiderati, richiama una pagina PHP "x" e la visualizza nel div con id "z". La logica è semplice, IE rovina sempre tutto.
    Infatti se per caso dovessi richiamare nella stessa pagina HTML, due volte la stessa funzione con valori diversi, succede il patatrac.
    Mettiamo caso che ho due LINK, A e B i quali richiamano due pagine PHP diverse che devono essere visualizzate in due DIV diversi, la funzione sarà così richiamata:

    LINK A -> LEGGI_PAGINA("A.php",....,"ID_A");
    LINK B -> LEGGI_PAGINA("B.php",....,"ID_B");

    Il mio problema è che se avvio B mentre A è ancora in esecuzione, IE non mi visualizzerà più il risultato di A, ma al suo posto verrà visualizzato il risultato di B. In pratica il risultato di B verrà visualizzato in "ID_A"...perchè tutto questo casino??? Non è possibile richiamare la stessa funzione con valori diversi???

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non è giusto incolpare IE di tutti i mali del mondo, compreso un nostro eventuale cattivo codice
    Oltre alle guide di html.it, prova il codice su questo sito:
    http://webreflection.blogspot.com/20...asic-call.html

    Il primo esempio di utilizzo che trovo è:
    codice:
    function Button1_onclick() 
    {
        var url = "abc.aspx?comando_ajax=1";
        var parametri = {colore:"rosso", numero:999, vettore:[1,2,3,4]};
        parametri.onLoad = onload;
        parametri.onError = onerror;
        
        ABC(parametri, url);
        
        function onload(request, elapsedTime)
        {
            document.getElementById("div1").innerHTML=(request.responseText);
        }
        
        function onerror(xhr, elapsedTime)
        {
            alert("Errore di trasmissione: " + xhr.status);
        }
    }
    Fai sapere se funziona, con IE6, IE7, Opera 9.5, Firefox 3. Ciao
    Pietro

  3. #3
    scusa la mia ignoranza, ma potresti spiegarmi un po' il codice che mi hai inviato come funziona e cosa fa?
    Non ho molto ben capito come risolve il mio problema

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    la tua funzione leggi_pagina, la sostituisci con il codice descritto nel sito segnalato:

    codice:
    /** ABC - Ajax Basic Call
     * @author  Andrea Giammarchi
     * @site        www.devpro.it */
    ABC = (function(ABC){
        return  function(data, url, async, user, pass){
            var time    = new Date,
                abc     = ABC(),
                send    = [],
                key     = null;
            if(data){
                for(key in data)
                    if(typeof data[key] !== "function" && data.hasOwnProperty(key)){
                        if(data[key] instanceof Array)
                            for(var i = 0; i < data[key].length; i++)
                                send.push(encodeURIComponent(key).concat("=", encodeURIComponent(data[key][i])));
                        else
                            send.push(encodeURIComponent(key).concat("=", encodeURIComponent(data[key])));
                    }
                key = 0 < send.length ? send.join("&") : null;
            };
            abc.open(
                key !== null ? "POST" : "GET",
                url,
                async = async === undefined ? true : !!async,
                user !== undefined && user,
                pass !== undefined && pass
            );
            abc.setRequestHeader("If-Modified-Since", "Mon, 26 Jul 1997 05:00:00 GMT");
            abc.setRequestHeader("Cache-Control", "no-cache");
            abc.setRequestHeader("X-Requested-With", "XMLHttpRequest");
            if(key !== null)
                abc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            if(async)
                abc.onreadystatechange= function(){
                    if(abc.readyState === 4 && data){
                        key = /^(2|3)[0-9]{2}$/.test(abc.status) ? "onLoad" : "onError";
                        if(typeof data[key] === "function")
                            data[key](abc, new Date - time);
                    }
                };
            abc.send(key);
            return  abc;
        };
    })(this.XMLHttpRequest ?
        function(){return new XMLHttpRequest;} :
        function(){return new ActiveXObject("Microsoft.XMLHTTP");}
    );

    Poi usi gli esempi dello stesso sito, o anche quello che ti ho proposto io
    Pietro

  5. #5
    scusami tanto ma il codice non mi è molto chiaro...
    L'ho usato ed in effetti funziona bene anche con IE.
    Però ho usato solo la versione base, nel senso, inviando una semplice variabile GET con PHP.

    Ora ti elenco le mie problematiche:
    usando la funzione che hai scritto tu BUTTON1_ONCLICK
    cos'è la variabile PARAMETRI???
    Come si inviano variabili POST????
    E' possibile far visualizzare un'immagine fino a quando non si carica del tutto la pagina PHP asincrona???

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da lionalex
    scusami tanto ma il codice non mi è molto chiaro...
    L'ho usato ed in effetti funziona bene anche con IE.
    Però ho usato solo la versione base, nel senso, inviando una semplice variabile GET con PHP.

    Ora ti elenco le mie problematiche:
    usando la funzione che hai scritto tu BUTTON1_ONCLICK
    cos'è la variabile PARAMETRI???
    Come si inviano variabili POST????
    E' possibile far visualizzare un'immagine fino a quando non si carica del tutto la pagina PHP asincrona???
    il codice non mi è molto chiaro...
    In effetti è un pochino criptico

    L'ho usato ed in effetti funziona bene anche con IE.
    Non lo avrei consigliato se no

    cos'è la variabile PARAMETRI???
    è un oggetto che serve a pilotare la funzione ABC, come vedi, colore:"rosso", numero:999, ..., variabile_n:valore_n -> sono valori passati via POST alla pagina server

    parametri.onLoad = onload -> definisce la funzione di ascolto: quando riceve i dati dal server ad esempio, esegue: document.getElementById("div1").innerHTML=(request .responseText);


    E' possibile far visualizzare un'immagine fino a quando non si carica del tutto la pagina PHP asincrona???
    certo che sì; nella funzione di esempio Button1_onclick, prima di fare la chiamata ajax, posso fare per esempio: document.getElementById("div1").innerHTML="[img]xxx.jpg[/img]";
    Pietro

  7. #7
    quindi come si inviano le variabili POST?
    Se modifico i parametri COLORE,NUMERO...che succede??? A che servono quelle variabili???

    Per chiamata AJAX intendi ABC(parametri,url) ????

  8. #8
    Per le variabili POST ho trovato una via d'uscita, le passo tutte come GET
    Sono sempre interessato a sapere come passarle POST....

    A parte anche sapere specificamente la variabile PARAMETRI che fa....

    Ora ho un altro problema: Io uso una codifica ISO-8859-1 e quando visualizza dei dati di una pagina PHP asincrona con la funzione che mi hai postato, tutti i caratteri accentati non li visualizzo correttamente, cosa posso fare per risolvere questo problema????

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da lionalex
    Per le variabili POST ho trovato una via d'uscita, le passo tutte come GET
    Sono sempre interessato a sapere come passarle POST....

    A parte anche sapere specificamente la variabile PARAMETRI che fa....

    Ora ho un altro problema: Io uso una codifica ISO-8859-1 e quando visualizza dei dati di una pagina PHP asincrona con la funzione che mi hai postato, tutti i caratteri accentati non li visualizzo correttamente, cosa posso fare per risolvere questo problema????
    in GET hai un limite di lunghezza caratteri di 255 caratteri se ben ricordo... quindi potrebbe diventare un problema se invii un form...
    nella pagina php prova a mettere
    Codice PHP:
    header('Content-Type: text/html; charset=iso-8859-1'); 
    DEVE ESSERE LA PRIMA DI TUTTO LO SCRIPT
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da lionalex
    Per le variabili POST ho trovato una via d'uscita, le passo tutte come GET
    Sono sempre interessato a sapere come passarle POST....

    A parte anche sapere specificamente la variabile PARAMETRI che fa....

    Ora ho un altro problema: Io uso una codifica ISO-8859-1 e quando visualizza dei dati di una pagina PHP asincrona con la funzione che mi hai postato, tutti i caratteri accentati non li visualizzo correttamente, cosa posso fare per risolvere questo problema????
    Io sinceramente non so che dire! non ho passato una dll con codice binario criptato, ma un sorgente javascript che un minimo di attenzione credo se lo meriti. Inoltre mi pare pure di averlo detto, reguardo alle variabili passate via POST; ma ripeto, non si sa mai.

    Le variabili GET le passo con l'url:

    url = "pagina.aspx?variabile1=valore1&variabile2=valore2 ";

    Se le volessi passare via POST, farei così:
    var parametri = {variabile1:valore1, variabile2:valore2, variabilen:valoren};

    Per la codifica caratteri, hanno già risposto. Io non so nulla perchè non ho mai avuto questi problemi. Ma anche qui ci sono discussioni dell'Autore di questo codice ajax.
    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.