Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: [Ajax]problema Firefox

  1. #1

    [Ajax]problema Firefox

    ciao!!
    ho notato che il mio script non funziona se uso firefox
    vi posto il codice
    codice:
    <html>
    <div id=risultato></div>
    <script language=javascript>
    function getXMLHttp() {
    var xmlhttp = null;
    if (window.ActiveXObject) {
    if (navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) {
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    } else {
    xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    }
    }
    if (!xmlhttp && typeof(XMLHttpRequest) != 'undefined') {
    xmlhttp = new XMLHttpRequest()
    }
    return xmlhttp
    }
    objHTTP = getXMLHttp();
    objHTTP.open('GET', 'indirizzo.php', true);
    objHTTP.onreadystatechange = function() {elaboraRisposta()}
    objHTTP.send(null);
    function elaboraRisposta() {
    if (objHTTP.readyState == 4) {
    	var risposta=objHTTP.responseTEXT;
    	if(risposta!=''){
    	document.getElementById('risultato').innerHTML=risposta;
    	}
    }
    }
    </script>
    con IE 7 e anche con IE 7 funziona!

    con firefox viene fuori undefined..perchè??

    (lo script di base è quello che c'è qui)



  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    if (window.ActiveXObject) {

    Non credo che questo oggetto esista in browser diversi da IE
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Originariamente inviato da Mich_
    if (window.ActiveXObject) {

    Non credo che questo oggetto esista in browser diversi da IE
    ma credo che sia appunto quello lo snodo...
    se esiste, quindi hai IE, fa così:
    codice:
    if (window.ActiveXObject) {
      if (navigator.userAgent.toLowerCase().indexOf("msie 5") != -1) {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } else {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      }
    }
    e in base alla versione di IE usa l'oggetto adatto.
    se non esiste...controlla che la variabile xmlhttp sia vuota e allora usa "new XMLHttpRequest()"-->firefox
    codice:
    if (!xmlhttp && typeof(XMLHttpRequest) != 'undefined') {
      xmlhttp = new XMLHttpRequest()
    }
    return xmlhttp
    }
    :master:

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Hai uno strano modo di usare le indentazioni nel software.

    Ho riguardato il programma e mi ci sono perso varie volte.

    Comunque ho scoperto che usi una funzione che non mi risulta esistere.
    getXMLHttp()
    Forse e` un metodo di qualche oggetto (che io non conosco, e non ho trovato nel reference che ho consultato), ma allora e` usata in modo improprio.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    getXMLHttp è la funzione che ha definito lui.

    in questo pezzo di codice

    codice:
    if (!xmlhttp && typeof(XMLHttpRequest) != 'undefined') {
    xmlhttp = new XMLHttpRequest()
    }
    typeof(XMLHttpRequest()) dovrebbe andare con paio di parentesi tonde in più.. no? altrimenti darà sempre undefined perchè quell'oggetto non esiste

    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se ho capito la struttura dello script (e` difficile con quella indentazione), il geXMLHttp() e` chiamato PRIMA che venga definito XMLHttpRequest(). Infatti e` FUORI da tutte le funzioni.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Originariamente inviato da fcaldera
    typeof(XMLHttpRequest()) dovrebbe andare con paio di parentesi tonde in più.. no?
    no, stai verificando l'esistenza della funzione e non dell' oggetto restituito.

    Se XMLHttpRequest non esiste XMLHttpRequest() non è nullo, è un errore perchè la funzione, appunto, non esiste.


    Presa dalla EverGreen:
    codice:
    function getXMLHTTP() {
    	var s = ['undefined','MSIE 5','Microsoft','Msxml2','.XMLHTTP'];
    	return ((typeof(XMLHttpRequest)!=s[0])?new XMLHttpRequest():
    		((window.ActiveXObject)?new ActiveXObject(
    			((navigator.userAgent.indexOf(s[1])!=-1)?s[2]:s[3])+s[4]):
    		false));
    }
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Originariamente inviato da andr3a

    codice:
    function getXMLHTTP() {
    	var s = ['undefined','MSIE 5','Microsoft','Msxml2','.XMLHTTP'];
    	return ((typeof(XMLHttpRequest)!=s[0])?new XMLHttpRequest():
    		((window.ActiveXObject)?new ActiveXObject(
    			((navigator.userAgent.indexOf(s[1])!=-1)?s[2]:s[3])+s[4]):
    		false));
    }
    Quindi questo dovrebbe andare???

    PS.
    Quello script io l'avevo preso dalla sezione Pro di Html.it
    pensavo fosse corretto

  10. #10
    Originariamente inviato da Tony512
    Quindi questo dovrebbe andare???
    senza dovrebbe, quello ti restituisce un oggetto XHTMLHttp su FireFox, Opera, IE ... ed altri
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.