Rumah  >  Soal Jawab  >  teks badan

javascript - Tanya soalan tentang Ajax membaca fail xml?

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

js adalah seperti berikut:

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

Kod html adalah seperti berikut:

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

Saya mempelajari contoh dalam w3school dan ingin menukarnya untuk memasukkan nama pengguna, kemudian mencari nod yang mengandungi nama pengguna dalam fail xml, dan akhirnya memaparkan kata laluan.

Google Chrome sentiasa melaporkan ralat: Tidak dapat membaca sifat 'documentElement' null.
Dan Firefox melaporkan ralat: xmlhttp.responseXML adalah batal.
Saya sudah lama tidak dapat memikirkannya, jadi saya datang ke sini untuk meminta bantuan.

为情所困为情所困2685 hari yang lalu522

membalas semua(2)saya akan balas

  • 伊谢尔伦

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

    Ralat yang dilaporkan dalam kod anda mestilah ayat ini:

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

    Harta XMLHttpRequest.responseXML ialah nilai baca sahaja yang mengembalikan Dokumen yang mengandungi HTML atau XML yang diambil oleh permintaan, atau batal jika permintaan itu tidak berjaya, belum dihantar atau data yang diambil tidak boleh dihuraikan dengan betul sebagai XML atau HTML. Sumber

    Seperti yang dinyatakan di atas, permintaan itu tidak berjaya pada masa ini, jadi xmlhttp.responseXML adalah batal, jadi ralat akan dilaporkan. Cuba tulis kod ini dalam pernyataan if yang menentukan status ajax.

    balas
    0
  • 漂亮男人

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

    Terima kasih banyak, ia telah diselesaikan. (Hantar bunga secara manual

    balas
    0
  • Batalbalas