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

    Problema con Ajax Internet Explorer

    Ciao a tutti...
    mi succede una cosa stranissima visto che internet explorer utilizza Ajax in modo nativo...
    ho creato un semplice script che invia e recupera dati da Ajax a PHP, in firefox funziona tutto alla perfezione... in IE mi funziona solo una volta, alle successive invocazioni no!
    C'è qualche bug che non conosco? quali attenzioni si devono usare con Ajax in IE?

    Please help!


    THANKS

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    dove è il codice?
    Pietro

  3. #3
    Originariamente inviato da pietro09
    dove è il codice?
    Eccolo...
    codice:
    // crea l'oggetto per la comunicazione AJAX con il server   
    function crea_http_req() {   
        var req = false;   
        if (typeof XMLHttpRequest != "undefined")   
            req = new XMLHttpRequest();   
        if (!req && typeof ActiveXObject != "undefined") {   
            try {   
                req=new ActiveXObject("Msxml2.XMLHTTP");   
            } catch (e1) {   
                try {   
                    req=new ActiveXObject("Microsoft.XMLHTTP");   
                } catch (e2) {   
                    try {   
                        req=new ActiveXObject("Msxml2.XMLHTTP.4.0");   
                    } catch (e3) {   
                        req=null;   
                    }   
                }   
            }   
        }   
      
        if(!req && window.createRequest)   
            req = window.createRequest();
        
        if (!req) alert("Il browser non supporta AJAX");   
      
        return req;   
    }   
      
    // l'oggetto per comunicare con il server   
    var http_req = crea_http_req();

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    puoi vedere se questa versione dà errore? :master:

    codice:
    function crea_http_req() 
    {
    	var xmlhttp = null;
    
    	if(window.XMLHttpRequest) 
    	{
    		xmlhttp = new XMLHttpRequest(); // Gecko (Firefox, Moz), KHTML (Konqueror, Safari), Opera, Internet Explorer 7
    	} 
    	else if(window.ActiveXObject) 
    	{
    		try
    		{
    			xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); // Internet Explorer 6 
    		} 
    		catch(e) 
    		{
    			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer 4,5 
    		}
    		} 
    	else 
    	{
    		xmlhttp = null;
    	}
    	return xmlhttp;
    };
    Pietro

  5. #5
    Pietro anche con il codice da te postato succede la stessa cosa ... in firefox tutto ok, in IE6 e IE7 mi funziona solo una volta poi non ottengo più risposte...

    mi potreste consigliare un buon debugger o sniffer per capire cosa succede la seconda volta che eseguo il codice con IE ?

    Grazie.

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Mi dispiace ma non posso aiutarti .
    Comunque è evidente che l'errore non è nella funzione che hai mandato, ma nel resto: proviamo con più codice? :master:
    Pietro

  7. #7
    non è che hai, nella parte di codice che invia la richiesta ajax,
    codice:
    http_req.setRequestHeader("connection", "keep alive");
    ... se l'hai e se il tuo server è IIS, togli l'istruzione.
    A me ha funzionato!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  8. #8
    codice:
    // crea l'oggetto per la comunicazione AJAX con il server   
    function crea_http_req() {   
        var req = false;   
        if (typeof XMLHttpRequest != "undefined")   
            req = new XMLHttpRequest();   
        if (!req && typeof ActiveXObject != "undefined") {   
            try {   
                req=new ActiveXObject("Msxml2.XMLHTTP");   
            } catch (e1) {   
                try {   
                    req=new ActiveXObject("Microsoft.XMLHTTP");   
                } catch (e2) {   
                    try {   
                        req=new ActiveXObject("Msxml2.XMLHTTP.4.0");   
                    } catch (e3) {   
                        req=null;   
                    }   
                }   
            }   
        }   
      
        if(!req && window.createRequest)   
            req = window.createRequest();
        
        if (!req) alert("Il browser non supporta AJAX");   
      
        return req;   
    }   
      
    // l'oggetto per comunicare con il server   
    var http_req = crea_http_req();   
    
    // invia i dati del form al server   
    function invia_dati() {   
    	
    	var dati_post = "el=" + encodeURIComponent( document.getElementById("el").value);
       
      
        http_req.onreadystatechange = gestisci_risposta;   
        http_req.open('POST', url, true);   
        http_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
        http_req.setRequestHeader("Content-length", dati_post.length);
        http_req.setRequestHeader("Connection", "close"); // forse il problema sta qui?
        http_req.send(dati_post);
    }
    Ecco tutto...

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    insomma, nel tuo codice manca sempre qualcosa

    ho provato così, con copia - incolla e mi funziona
    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="b.aspx.vb" Inherits="prove_b" %>
    
    <!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>Pagina senza titolo</title>
    
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    
    
    function Button1_onclick() 
    {
        invia_dati();
    }
    
    function crea_http_req() {   
        var req = false;   
        if (typeof XMLHttpRequest != "undefined")   
            req = new XMLHttpRequest();   
        if (!req && typeof ActiveXObject != "undefined") {   
            try {   
                req=new ActiveXObject("Msxml2.XMLHTTP");   
            } catch (e1) {   
                try {   
                    req=new ActiveXObject("Microsoft.XMLHTTP");   
                } catch (e2) {   
                    try {   
                        req=new ActiveXObject("Msxml2.XMLHTTP.4.0");   
                    } catch (e3) {   
                        req=null;   
                    }   
                }   
            }   
        }   
      
        if(!req && window.createRequest)   
            req = window.createRequest();
        
        if (!req) alert("Il browser non supporta AJAX");   
      
        return req;   
    }   
      
    // invia i dati del form al server   
    function invia_dati() { 
        // l'oggetto per comunicare con il server   
        var http_req = crea_http_req();   
    	
    	var dati_post = "";
       
      
        http_req.onreadystatechange = gestisci_risposta;   
        http_req.open('POST', "b.aspx?ajax_comando=1", true);   
        http_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
        http_req.setRequestHeader("Content-length", dati_post.length);
        http_req.setRequestHeader("Connection", "close"); // forse il problema sta qui?
        http_req.send(dati_post);
        
        function gestisci_risposta()
        {
    		if (http_req.readyState == 4) 
    		{
    			if (http_req.status != 200) {alert("ERRORE NELLA TRASMISSIONE DATI!" + "\n\nreadyState:"+ http_req.readyState +"\nstatus: "+http_req.status + "\nstatusText: " + http_req.statusText + "\n\nheaders:\n"+ http_req.getAllResponseHeaders()); return;}
    			
    			var t = http_req.responseText;
    			
    			document.getElementById("div1").innerHTML = t;
    		}
        
        }
    }
    
    
    
    // ]]>
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
        <div id="div1"></div>
        </form>
    </body>
    </html>
    Pietro

  10. #10
    ho controllato meglio e mi sono accorto che...
    codice:
    // crea l'oggetto per la comunicazione AJAX con il server   
    function crea_http_req() {   
        var req = false;   
        if (typeof XMLHttpRequest != "undefined")   
            req = new XMLHttpRequest();   
        if (!req && typeof ActiveXObject != "undefined") {   
            try {   
                req=new ActiveXObject("Msxml2.XMLHTTP");   
            } catch (e1) {   
                try {   
                    req=new ActiveXObject("Microsoft.XMLHTTP");   
                } catch (e2) {   
                    try {   
                        req=new ActiveXObject("Msxml2.XMLHTTP.4.0");   
                    } catch (e3) {   
                        req=null;   
                    }   
                }   
            }   
        }   
      
        if(!req && window.createRequest)   
            req = window.createRequest();
        
        if (!req) alert("Il browser non supporta AJAX");   
      
        return req;   
    }   
      
    // l'oggetto per comunicare con il server   
    var http_req = crea_http_req();   
    
    // invia i dati del form al server   
    function invia_dati() {   
    	
    	var dati_post = "el=" + encodeURIComponent( document.getElementById("el").value);
       
      
        http_req.onreadystatechange = gestisci_risposta;   
        http_req.open('POST', url, true);   
        http_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   
        http_req.setRequestHeader("Content-length", dati_post.length);
        http_req.setRequestHeader("Connection", "close");
        http_req.send(dati_post);
    }
    questa questo codice funziona alla perfezione, questo sotto invece in mozzilla firefox 2 va in IE 6 e IE7 no...
    codice:
    // recupero e gestisco la risposta inviata dal server   
    function gestisci_risposta() {   
        if(http_req.readyState == 4) {
        	if (http_req.status != 200) {alert("ERRORE NELLA TRASMISSIONE DATI!" + "\n\nreadyState:"+ http_req.readyState +"\nstatus: "+http_req.status + "\nstatusText: " + http_req.statusText + "\n\nheaders:\n"+ http_req.getAllResponseHeaders()); return;} // ho aggiunto questo ora grazie a Pietro09  
            
            var esito = http_req.responseText;   
            var message = esito;
            switch (esito) {   
              case '1': 
                document.getElementById("output").innerHTML = message;
                // etc.
                break;   
      
              case '2':
                document.getElementById("output").innerHTML = message;
                // etc.
                break;
      
              case '3': 
                document.getElementById("output").innerHTML = message;
                // etc.
                break; 
      
              case '4': 
                document.getElementById("output").innerHTML = message;
                // etc.
                break;   
      				
              case '5': // Dati inviati a email
                MostraMenu(); 
                document.getElementById("output").innerHTML = message;
                // etc.
                break;
      				
              default: // Nessuna risposta
                document.getElementById("output").innerHTML = message;
                // etc.
                break;
            }   
        }   
    }
    non riesco a capire il perchè!

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.