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

    problema XMLHttpRequest con IE

    Ho sviluppato il seguente codice per ottenere una lista di nazioni da un file XML
    codice:
    // crea l'oggetto per la comunicazione AJAX con il server
    // compatibile con tutti i browser che supportano AJAX
    
    var xmlHttp;
    function createXMLHttpRequest() {
    	
    	if (window.ActiveXObject) {
    		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    	}
    	else if (window.XMLHttpRequest) {
    		xmlHttp = new XMLHttpRequest;
    	}	
    
    }
    
    
    
    
    function startRequest(){
    	createXMLHttpRequest();
    	xmlHttp.onreadystatechange = handleStateChange;
    	xmlHttp.open("GET", "inc/states.xml", true);
    	xmlHttp.send(null);
    }
    function handleStateChange() {
    	if(xmlHttp.readyState == 4){
    		if(xmlHttp.status == 200) {
    			listAllStates();
    		}
    	}
    }
    
    function listAllStates() {
    	var xmlDoc = xmlHttp.responseXML;
    	var allStates = xmlDoc.getElementsByTagName("country");
    	outputList(allStates);
    }
     
    function outputList(states) {
    	var out='<ul>';
    	var currentState = null;
    	for( i = 0; i < states.length; i++) {
    		currentState = states[i];
    		out = out + "<li onmousedown=\"change_lg('shipstate',this.innerHTML);\">" + currentState.childNodes[0].nodeValue + "";		
    	}
    	out += '[/list]';
    	document.getElementById('lang_2').innerHTML = out;
    	click_lg(2);
    }
    Funziona bene con Firefox ma non con IE, ovvero non dà errore ma non riempie la lista

    Come mai?

    Grazie!!!
    Siti web Gallery: creazione siti web firenze

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    quale versione di Explorer?
    che tipo di malfunzionamento si verifica? ci sono messaggi di errore?
    Vuoi aiutare la riforestazione responsabile?

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

  3. #3
    Sia su ie6 che su ie7 non dà errore ma non riempie la lista. states.length=0

    ho provato ad ottenere XMLHttpRequest con funzioni più complesse che tengono conto delle varie implementazioni dei vari browsers ma il risultato non cambia
    Siti web Gallery: creazione siti web firenze

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    fai un po' di debug

    function listAllStates() {
    alert(xmlHttp);
    var xmlDoc = xmlHttp.responseXML;
    alert(xmlDoc);
    var allStates = xmlDoc.getElementsByTagName("country");
    alert(allStates);
    outputList(allStates);
    }


    che valori ti ritornano i tre alert (su IE6 e 7)?
    Vuoi aiutare la riforestazione responsabile?

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

  5. #5
    Sia su ie6 che ie7 mi risponde a tutti e tre: [object], mentre con Firefox mi dice nell'ordine: [object XMLHttpRequest], [object XMLDocument], [object HTMLCollection],
    Siti web Gallery: creazione siti web firenze

  6. #6
    ops ... avevo visto male ... errori in console di IE?

    P.S. come per il blasonato AHAH, il tuo script soffre di problemi se fai più di una chiamata alla stessa funzione, "grazie" alla variabile globale che viene sovrascritta
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Confesso che ci sto capendo poco poco...
    Ho svuotato la cache dei due browser e ora funziona tutto su tutti i browser

    Andr3a, potresti spiegarti meglio?

    GRAZIE!!
    Siti web Gallery: creazione siti web firenze

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    quindi la pagina ora funziona
    però poi non funziona più fino a quando non svuoti nuovamente la cache?

    se sì prova a modificare

    codice:
    if(xmlHttp.readyState == 4){
    	if(xmlHttp.status == 200) {
    		listAllStates();
    	}
    }
    codice:
    if(xmlHttp.readyState == 4){
    	if ((xmlHttp.status == 200) || (xmlHttp.status == 304)) {
    		listAllStates();
    	}
    }
    Vuoi aiutare la riforestazione responsabile?

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

  9. #9
    il 304 e' per il moved, ma la cache di IE e' ben altro problema, risolto ad esempio nella mia ABC
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    no, il 304 non è il moved... è il "not modified" (cioè la risposta non è cambiata dall'ultima richiesta). Avevo lo stesso problema tempo fa con Opera e ho risolto così, penso che il setRequestHeader dell' "if-modified-since" abbia lo stesso effetto...
    Vuoi aiutare la riforestazione responsabile?

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

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.