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

    Impossibile leggere responseXML con getElementsByTagName

    Ciao a tutti,
    devo leggere un file XML preso con il metodo responseXML tramite una richiesta AJAX.
    Il file XML sembra esserci, ma non riesco a leggere gl ielementi che ci sono in esso.

    Il mio codice è il seguente:
    Codice PHP:
    var ajaxRequest;
            try{
                
    // Opera 8.0+, Firefox, Safari
                
    ajaxRequest = new XMLHttpRequest();
            } catch (
    e){
                
    // Internet Explorer Browsers
                
    try{
                    
    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (
    e) {
                    try{
                        
    ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (
    e){
                        
    // Something went wrong
                        
    alert("Your browser broke!");
                        return 
    false;
                    }
                }
            }
            
    // Create a function that will receive data sent from the server
            
    ajaxRequest.onreadystatechange = function(){
                if(
    ajaxRequest.readyState == 4){
                    if(
    ajaxRequest.responseXML){
                        
    alert('onreadyState == 4');
                        var 
    xmlDoc ajaxRequest.responseXML;
                        var 
    id xmlDoc.getElementsByTagName("id");
                        var 
    title xmlDoc.getElementsByTagName("title");
                        var 
    latitude xmlDoc.getElementsByTagName("latitude");
                        var 
    longitude xmlDoc.getElementsByTagName("longitude");
                        
    //var content = xmlDoc.getElementsByTagName("content");
                    
                        
    alert(title.length);
                    
                        
                }
            }
            
            
    ajaxRequest.open("GET""markList.php"true);
            
    ajaxRequest.setRequestHeader("content-type""application/x-www-form-urlencoded");
            
    ajaxRequest.send(null); 
    - se stampo l'oggetto xmlDoc, ricevo un [object XMLDocument] quindi il file XML c'è (altrimenti sarebbe null);
    - alert(title.length); mi dà valore 0, il che è impossibile perché ho già controllato che markList.php restituisca dei valori tali ma per questo vi incollo anche markList.php:

    Codice PHP:
    <?php
    header
    ("Content-Type: text/xml");
    include(
    "connection.php");
    $stream mysql_connect($host,$user,$password)or die("Connessione non riuscita: " mysql_error());
    mysql_select_db($db$stream) or die("Errore nella selezione del database");
    $sql "SELECT * FROM ch_comments";
    $query mysql_query($sql) or die('Error, insert query failed');
    while(
    $result mysql_fetch_array($query)){
        echo 
    "<id>".$result['id']."</id>";
        echo 
    "<title>".$result['title']."</title>";
        echo 
    "<author>".$result['author']."</author>";
        echo 
    "<latitude>".$result['latitude']."</latitude>";
        echo 
    "<longitude>".$result['longitude']."</longitude>";
        echo 
    "<content>".$result['content']."</content>";
    }
    mysql_close($stream);
    ?>
    Spero possiate aiutarmi!
    Grazie diecimila!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    leggi qui secondo me sbagli lettura dei nodi.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Ho letto più e più volte.
    Ho provato anche con http://www.w3schools.com/Ajax/ajax_responsexml.asp ma non riesco a venirne fuori.
    Anche secondo me c'è una lettura errata dei nodi, ma non so come risolvere.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da trez
    Ho letto più e più volte.
    Ma... sarà come dici ma io nel listato postato non vedo il parsing del file.xml
    if(ajax.responseXML)
    // visualizzazione risultato parsing
    elemento.innerHTML = parsaXml(ajax.responseXML);
    else
    e secondo me finché non eseguirai quella procedura non funzionerà niente.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    il mio "parsaXml()" è all'interno dell'if di if(ajaxRequest.readyState == 4)
    quindi che sia chiamato attraverso una funzione o meno, faccio le stesse cose.

    Il file xml c'è, viene restituito, ma i metodi per leggerlo non mi restituiscono nulla.

    Codice PHP:
     var title xmlDoc.getElementsByTagName("title");
    alert('title: ' title.length); 
    Mi restituisce 0 come valore.

    Se provo a fare una stampa con un responseText, ho pure la prova che di ritorno mi viene dato "qualcosa":
    Codice PHP:
    <id>24</id><title>primo</title><author>gunny</author><latitude>-105.46875</latitude><longitude>-31.353636941500987</longitude><content>primo primo primo primo </content><id>25</id><title>secondo</title><author>gunny</author><latitude>-45.703125</latitude><longitude>14.944784875088372</longitude><content>secondo secondo secondo secondo </content><id>26</id><title>terzo</title><author>gunny</author><latitude>30.9375</latitude><longitude>34.88593094075317</longitude><content>terzo terzo terzo terzo terzo terzo </content

  6. #6
    Sono andato un po' più a fondo e il problema non è nei metodi che utilizzo, ma nell'xml che dovrebbe tornarmi indietro.

    Riscrivo la pagina markList.php che ho corretto con l'intestazione xml:
    Codice PHP:
    <?php
    header
    ("Content-Type: text/xml");
    include(
    "connection.php");
    $stream mysql_connect($host,$user,$password)or die("Connessione non riuscita: " mysql_error());
    mysql_select_db($db$stream) or die("Errore nella selezione del database");
    $sql "SELECT * FROM ch_comments";
    $query mysql_query($sql) or die('Error, insert query failed');
    echo 
    "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
    while(
    $result mysql_fetch_array($query)){
        echo 
    "<id>".$result['id']."</id>";
        echo 
    "<title>".$result['title']."</title>";
        echo 
    "<author>".$result['author']."</author>";
        echo 
    "<latitude>".$result['latitude']."</latitude>";
        echo 
    "<longitude>".$result['longitude']."</longitude>";
        echo 
    "<content>".$result['content']."</content>";
    }
    mysql_close($stream);
    ?>
    Controllando con Firebug, ho notato che sulla risposta di responseXML, mi viene dato un parse error sempre sul primo tag del file xml che restituisco.
    Non riesco a capire.

    P.S.
    L'errore riscontrato è:
    Errore interpretazione XML: contenuto illegale dopo l'elemento Indirizzo:[...]

    P.P.S. Ho notato che l'errore è sempre alla fine del primo elemento xml stampato. Non ha importanza quanto lungo sia, ma l'errore è sempre alla fine di questo.

  7. #7
    Niente.
    Sto impazzendo.
    Ho provato a cercare se a qualcuno è capitato un problema come il mio, ma non riesco a trovare risposta

  8. #8
    Risolto:

    Codice PHP:
    echo "<?xml version="1.0\" encoding=\"ISO-8859-1\"?>"
    echo 
    "<nome-elemento>"
    while(
    $result mysql_fetch_array($query)){ 
        echo 
    "<id>".$result['id']."</id>"
        echo 
    "<title>".$result['title']."</title>"
        echo 
    "<author>".$result['author']."</author>"
        echo 
    "<latitude>".$result['latitude']."</latitude>"
        echo 
    "<longitude>".$result['longitude']."</longitude>"
        echo 
    "<content>".$result['content']."</content>"

    echo 
    "</nome-elemento>";
    Un file xml deve contenere un tag contenitore principale.
    Spero possa essere utile ad altre persone!
    Ciao!

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.