XMLHttpRequest(Ajax)错误

Mur*_*ula 50 javascript xml ajax xmlhttprequest

XMLHttpRequest在JavaScript中使用.但是,它给了我一个错误,我不知道我的问题是什么.
我必须解析XML文件并将其内容分配给网页 - 这是我的代码:

<script = "text/javascript">

    window.onload = onPageLoad();
    var questionNum = 0;

    function onPageLoad(questionNum) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET","quiz.xml");
        try {
            xmlhttp.send(null); // Here a xmlhttprequestexception number 101 is thrown 
        } catch(err) {
            document.getElementById("body").innerHTML += "\nXMLHttprequest error: " + err.description; // This prints "XMLHttprequest error: undefined" in the body.
        }
        xmlDoc = xmlhttp.responseXML;
        parser = new DOMParser(); // This code is untested as it does not run this far.
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我的XML文件位于同一目录中.

<question>
    <query>what is 2+2?</query>
    <option>4</option>
    <option>5</option>
    <option>3</option>
    <answer>4</answer>
</question>
Run Code Online (Sandbox Code Playgroud)

仅供参考,我通常使用C#或Java编程,并且我在Google Chrome上运行我的网站.

Nad*_*far 82

所以这里可能有一些问题.

首先阅读如何使用,XMLHttpRequest.open()因为有第三个可选参数用于指定是否发出异步请求,默认为true.这意味着您正在进行异步请求,并且需要在执行之前指定回调函数send().以下是MDN的一个例子:

var oXHR = new XMLHttpRequest();

oXHR.open("GET", "http://www.mozilla.org/", true);

oXHR.onreadystatechange = function (oEvent) {  
    if (oXHR.readyState === 4) {  
        if (oXHR.status === 200) {  
          console.log(oXHR.responseText)  
        } else {  
           console.log("Error", oXHR.statusText);  
        }  
    }  
}; 

oXHR.send(null);  
Run Code Online (Sandbox Code Playgroud)

其次,由于您收到101错误,因此可能使用了错误的URL.因此,请确保您提出请求的网址是正确的.此外,请确保您的服务器能够为您的quiz.xml文件提供服务.

您可能需要通过简化/缩小问题所在地进行调试.所以我首先要做一个简单的同步请求,这样你就不用担心回调函数了.所以这是来自MDN的另一个用于发出同步请求的示例:

var request = new XMLHttpRequest();  
request.open('GET', 'file:///home/user/file.json', false);   
request.send(null);  

if (request.status == 0)  
    console.log(request.responseText); 
Run Code Online (Sandbox Code Playgroud)

此外,如果您刚刚开始使用Javascript,您可以参考MDN获取Javascript API文档/示例/教程.

  • 为什么不尝试使用 `if (oXHR.readyState === 4) { ` 来更改 `if (oXHR.readyState == XMLHttpRequest.DONE) {` ...而不仅仅是 4。 (2认同)