Maison  >  Questions et réponses  >  le corps du texte

javascript - Poser une question sur la lecture de fichiers XML par Ajax?

fichier xml :

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <acc>
        <user>zhangsan</user>
        <psd>123456</psd>
    </acc>
    <acc>
        <user>lisi</user>
        <psd>654321</psd>
    </acc>
</urlset>
Le code

js est le suivant :

function showHint(str) {
        "user static";
        var xmlhttp  = new XMLHttpRequest();
        var psd_text = document.getElementById("psd_text");
        if (str.length == 0) {
            psd_text.innerHTML = "";
            return;
        }
        xmlhttp.open("GET", "acc.xml", true);
        xmlhttp.send();
        xmlhttp.onreadystatechange = function() {
            var acc_node = xmlhttp.responseXML.documentElement.getElementsByTagName("user");
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                for(var i = 0; i < acc_node.length; i++){
                    if(acc_node[i].firstChild.nodeValue.indexOf(str)){
                        psd_text.innerHTML = acc_node[i].lastChild.nodeValue;
                    }
                }
            }
        }
    }
    

Le code html est le suivant :

<body>
    <h3>请在下面的输入框中输入用户名:</h3>
    <form>
        <label>用户名:</label><input type="text" id="user_input" value="" onkeyup="showHint(this.value)" />
    </form>
    <p>密码:<span id="psd_text"></span></p> 
</body>

J'ai appris un exemple dans w3school et je voulais le changer pour saisir le nom d'utilisateur, puis rechercher le nœud contenant le nom d'utilisateur dans le fichier XML, et enfin afficher le mot de passe.

Google Chrome signale toujours une erreur : Impossible de lire la propriété 'documentElement' de null.
Et Firefox a signalé une erreur : xmlhttp.responseXML est nul.
Je n'ai pas réussi à comprendre depuis longtemps, alors je suis venu ici pour demander de l'aide.

为情所困为情所困2685 Il y a quelques jours521

répondre à tous(2)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:21:04

    L'erreur signalée dans votre code doit être cette phrase :

     var acc_node = xmlhttp.responseXML.documentElement.getElementsByTagName("user");

    XMLHttpRequest.responseXML est une valeur en lecture seule qui renvoie un document contenant le code HTML ou XML récupéré par la requête, si la requête a échoué, n'a pas été envoyée ou si les données récupérées ne peuvent pas être correctement analysé au format XML ou HTML, alors il est nul. Source

    Comme mentionné ci-dessus, la requête n'aboutit pas pour le moment, donc xmlhttp.responseXML est nul, donc une erreur sera signalée. Essayez d'écrire ce code dans l'instruction if qui détermine le statut ajax.

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-19 10:21:04

    Merci beaucoup, le problème est résolu. (Envoyer des fleurs manuellement

    répondre
    0
  • Annulerrépondre