Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Stellen Sie eine Frage zum Lesen von XML-Dateien mit Ajax?

xml-Datei:

<?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>
Der

js-Code lautet wie folgt:

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;
                    }
                }
            }
        }
    }
    

Der HTML-Code lautet wie folgt:

<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>

Ich habe ein Beispiel in w3school gelernt und wollte es ändern, um den Benutzernamen einzugeben, dann in der XML-Datei nach dem Knoten zu suchen, der den Benutzernamen enthält, und schließlich das Passwort anzuzeigen.

Google Chrome meldet immer einen Fehler: Die Eigenschaft „documentElement“ von null kann nicht gelesen werden.
Und Firefox hat einen Fehler gemeldet: xmlhttp.responseXML ist null.
Ich konnte es schon lange nicht mehr herausfinden, also bin ich hierher gekommen, um um Hilfe zu bitten.

为情所困为情所困2685 Tage vor520

Antworte allen(2)Ich werde antworten

  • 伊谢尔伦

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

    你代码中报错的应该是这一句:

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

    XMLHttpRequest.responseXML 属性是一个只读值,它返回一个包含请求检索的HTML或XML的Document,如果请求未成功,尚未发送,或者检索的数据无法正确解析为 XML 或 HTML,则为 null。来源

    按照上面说的,此时请求未成功,所以 xmlhttp.responseXML 是 null,所以会报错。你试试把这句代码写在判断 ajax 状态的 if 语句里面。

    Antwort
    0
  • 漂亮男人

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

    非常感谢,已经解决。(手动送花

    Antwort
    0
  • StornierenAntwort