javascript - Tanya soalan tentang Ajax membaca fail xml?
为情所困
为情所困 2017-05-19 10:19:04
0
2
590

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.

为情所困
为情所困

membalas semua(2)
伊谢尔伦

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.

漂亮男人

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan