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

    [AJAX] problema con xmlhttp.open asincrono

    Buongiorno.

    All'interno di un progetto universitario mi trovo ad avere a che fare con AJAX e con al necessità di recuperare dati da file xml in maniera asincrona. Il web è pieno di esempi e la cosa non dovrebbe essere troppo difficile, se non che mi trovo ad un punto morto con un esempio didattico.

    Ho questo xml che ho salbvato in locale nella stessa cartella del mio dummy index per evitare problemi di accesso cross domain e ho la seguente pagina html con script javascript

    Codice PHP:
    <html>
    <
    head>
    <
    script type="text/javascript">
    function 
    getInfo(){

    if (
    window.XMLHttpRequest)
      {
    // code for IE7+, Firefox, Chrome, Opera, Safari
      
    xmlhttp=new XMLHttpRequest();
      }
    else
      {
    // code for IE6, IE5
      
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }

    xmlhttp.open("GET","note.xml",false);
    xmlhttp.send();
      

    /*xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {    
        */    
    xmlDoc=xmlhttp.responseXML;
            
    document.getElementById("to").innerHTML=
            
    xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
            
    document.getElementById("from").innerHTML=
            
    xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
            
    document.getElementById("message").innerHTML=
            
    xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
        
    /*
        }
      }*/
    }

    function 
    getInfoA(){

    if (
    window.XMLHttpRequest)
      {
    // code for IE7+, Firefox, Chrome, Opera, Safari
      
    xmlhttp=new XMLHttpRequest();
      }
    else
      {
    // code for IE6, IE5
      
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (
    xmlhttp.readyState==&& xmlhttp.status==200)
        {    
            
    xmlDoc=xmlhttp.responseXML;
            
    document.getElementById("to").innerHTML=
            
    xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
            
    document.getElementById("from").innerHTML=
            
    xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
            
    document.getElementById("message").innerHTML=
            
    xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
        
        }
      }
    xmlhttp.open("GET","note.xml",true);
    xmlhttp.send();
      
     
    }
     
     
    </script>

    </head>

    <body onload="getInfo()">
    <h1>W3Schools Internal Note</h1>


    [b]To:[/b] <span id="to"></span>

    [b]From:[/b] <span id="from"></span>

    [b]Message:[/b] <span id="message"></span>

    <button type="button" onclick="getInfoA()">click me</button>



    </body>
    </html> 
    Il problema è che la prima funzione "getInfo()" fa il suo dovere, mentre la seconda "getInfoA()", sia che venga triggerata dal bottone che dall'onload non da alcun output. Dove sbaglio?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Prova legge le guide che trovi qui
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Originariamente inviato da cavicchiandrea
    Prova legge le guide che trovi qui
    Già fatto. l'esempio è infatti un'estensione di un esempio presente su w3schools, ho anche già letto la guida sul xml e quella sull'ajax di html.it, ma non sono comunque riuscito a trovare una soluzione.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Prova ad inserire degli alert nella funzione per vedere che tutti gli step siano regolari
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Ok, ho fatto così e ottengo vari cambiamenti di stato ma non viene mai eseguito il codice dentro il blocco if. Qualche idea al riguardo?

    Nella fattispecie facendo vedere lo xmlhttp.status nell'alert lo status rimane sempre a 0, il che mi lascia abbastanza perplesso, facendo ovviamente fallire la guardia dell'if. Aggiungo che rimuovendo il controllo sullo status la funzione fa quello che dovrebbe fare, dimostrando correttezza nell'output.

  6. #6
    Niente, continuo a sbatterci la testa ma non riesco a capire dove sia il problema, tanto più che usando una esempio analogo con un diverso xml, sempre ottenuto da w3schools lo status funziona. Invece il mio esempio continua a restituire uno status 0, che non è neanche inserito negli standard.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.