javascript - Poser une question sur la lecture de fichiers XML par Ajax?
为情所困
为情所困 2017-05-19 10:19:04
0
2
556

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.

为情所困
为情所困

répondre à tous(2)
伊谢尔伦

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.

漂亮男人

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!