Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Microsoft.XMLHTTP pagina remota


    Sto facendo un form con "controlli istantanei, ma...su firefox funziona...mentre su IE no :-(
    questa la demo
    codice:
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script src="ajaxforms.js" type="text/javascript" language="javascript"></script>
    <form action="" method="post">
    <table class=ajform>
    
    <tr>
    <td class="title">
    Username (*)
    </td>
    <td>
    <input type="text" name="username" value="" size="20" OnChange="CheckField(this)" tabindex="1"></td><td><div id="username" class="message"></div></td>
    </tr>
    
    </table>
    </form>

    qusto il contenuto del file ajaxforms.js
    codice:
    var AJAXForms = false;
    var LastField = null;
    var isIE = false;
    // on !IE we only have to initialize it once
    if (window.XMLHttpRequest) {
    	AJAXForms = new XMLHttpRequest();
    }
    
    function CheckField(field) {
    
    	if (window.XMLHttpRequest) {
    	// branch for IE/Windows ActiveX version
    	} else if (window.ActiveXObject) {
    		AJAXForms = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    
      AJAXForms.onreadystatechange = processChange;
      AJAXForms.open("GET", "check_form.php?op=ajax&field=" +field.name+"&value=" + field.value);
      LastField = field.name;
      AJAXForms.send(null);
    }
    
    function processChange() {
      if (AJAXForms.readyState == 4) { 
      
        var  res = document.getElementById(LastField);
        res.innerHTML = AJAXForms.responseText;
        res.style.visibility = "visible";
        
      }
    }
    che devo fare per farlo girare anche su IE :-( ?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  2. #2
    Nella guida Ajax di html.it c'&egrave; spiegato bene come 'prendere' l'oggetto XMLHttp dai diversi browsers.
    Microsoft ha (strano, vero?) cambiato nel corso degli anni il nome dell'ActiveX !!
    guarda QUI

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

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Che errore da su IE? Se funziona solo la prima volta e poi non funziona +, è un problema di cache lo sistemi aggiungendo un codice random alla richiesta querrystring.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    homezappa illumina la mia ignoranza su ste cose per favore

    fammi vedere come "modificare" lo script perchè non mi dia noia su IE7
    Tanto...lo fanno tutti... posso farlo anche io vero?

  5. #5
    ciao Andrea, no non da errore dopo la prima volta, ma bensì subito

    mi da il seguente errore

    Errore di run-time sconosciuto
    Tanto...lo fanno tutti... posso farlo anche io vero?

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Io uso questo che va benissimo:
    codice:
    function objAjx(){
    	    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;
        };
    		function Visualizza(div){
    		AjaX = objAjx();
             if(AjaX){
               //Chiamo la funzione caricoRisultati quando c'è un cambio evento    
                  AjaX.onreadystatechange=function(){
                     mostroRisultati(AjaX,div)
                  }
                  
               //Invio i dati alla pagina .asp
                  AjaX.open('GET', "studi.asp", true)         
                  AjaX.send(null)                                      
        }
     }
       function mostroRisultati(AjaX,div){
       //Se è andato tutto bene faccio vedere il risultato
          if (AjaX.readyState == 4 && (AjaX.status==200 || window.location.href.indexOf("http")==-1)){
        	document.getElementById(div).innerHTML = AjaX.responseText
    	  }
     
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Credo che sia sta parte quì

    codice:
    // on !IE we only have to initialize it once
    if (window.XMLHttpRequest) {
    AJAXForms = new ActiveXObject("Msxml2.XMLHTTP");
    }
    
    function CheckField(field) {
    
    if (window.XMLHttpRequest) {
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
    AJAXForms = new ActiveXObject("Msxml2.XMLHTTP");
    }
    dove c'è la differenza tra ie e FF
    Tanto...lo fanno tutti... posso farlo anche io vero?

  8. #8
    cavicchiandrea
    Mi andrebbe bene usare anche lo script da te postato, la mia esigenza è quella di fare validare i campi di un form allo stato

    OnChange

    sto cercando di applicare il tuo ma da perfetto ignorante di JS non mi viene facile

    ho fatto così
    codice js
    codice:
    function objAjx(){
    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;
    };
    		function Visualizza(div){
    		AjaX = objAjx();
             if(AjaX){
               //Chiamo la funzione caricoRisultati quando c'è un cambio evento    
                  AjaX.onreadystatechange=function(){
                     mostroRisultati(AjaX,div)
                  }
                  
               //Invio i dati alla pagina .asp
                  AjaX.open("GET", "check_form.php?op=ajax&field=" +field.name+"&value=" + field.value, true);       
                  AjaX.send(null)                                      
        }
     }
       function mostroRisultati(AjaX,div){
       //Se è andato tutto bene faccio vedere il risultato
          if (AjaX.readyState == 4 && (AjaX.status==200 || window.location.href.indexOf("http")==-1)){
        	document.getElementById(div).innerHTML = AjaX.responseText
    	  }
     
    }
    pagina
    codice:
    <tr><td>Email:</td><td><input type="text" name="email" value="" OnChange="objAjx(this)" class="obbligatori" /></td><td><div id="email" class="message"></div></td></tr>
    mi piacerebbe stampare il MEX dentro il DIV come era prima su FF
    Tanto...lo fanno tutti... posso farlo anche io vero?

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    cosi dovrebbe funzionare
    <tr><td>Email:</td><td><input type="text" name="email" value="" onChange="Visualizza('email',this)" class="obbligatori" /></td><td><div id="email" class="message"></div></td></tr>
    nella funziona Visualizza aggiungi il campo da controllare Visualizza(div,field)

    Il primo parametro gli passi il nome del div che vuoi che si mostri la risposta, il secondo gli passi il campo.

    P.S. Meglio se non mescoli nomi e id con input e div.
    <input type="text" name="email" id="email" value="" onChange="Visualizza('email',this)" class="obbligatori" />
    <div id="email_risposta" class="message"></div>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.