javascript - XMLHttpRequest (Ajax) 错误

标签 javascript ajax xml xmlhttprequest

我在 JavaScript 中使用 XMLHttpRequest。但是,它给了我一个错误,我不知道我的问题是什么。
我必须解析一个 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>

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

<question>
    <query>what is 2+2?</query>
    <option>4</option>
    <option>5</option>
    <option>3</option>
    <answer>4</answer>
</question>

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

最佳答案

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

首先阅读如何使用 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);

其次,由于您收到 101 错误,您可能使用了错误的 URL。因此,请确保您用来发出请求的 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);

另外,如果您刚开始使用 Javascript,您可以引用 MDN用于 Javascript API 文档/示例/教程。

关于javascript - XMLHttpRequest (Ajax) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866761/

相关文章:

java - 如何从元素映射生成 XML 文件?

java - Java 中的 JAXB 解码问题

c# - 避免 ASP.NET/C# 上的回发

javascript - 是否有可用的 Firebase v3 JS 库的未混淆/未缩小(调试)版本?

ajax - 如何找出要进行Ajax更新/渲染的组件的客户端ID?找不到从“bar”引用的表达式为“foo”的组件

xml - 使用 XML 作为(只读)人类可读的调查问题数据源

javascript - 上传前检测文件大小问题

javascript - .load() 函数在点击时加载整个页面

javascript - jQuery Ajax 无法调用 MVC 4 Controller 方法

jquery - 如何将图像拖放到容器中,然后根据拖入的内容更新容器?