Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax:不从XML文件检索数据_Javascript_Html_Ajax_Xml - Fatal编程技术网

Javascript Ajax:不从XML文件检索数据

Javascript Ajax:不从XML文件检索数据,javascript,html,ajax,xml,Javascript,Html,Ajax,Xml,我正在学习ajax并尝试在页面上显示一些数据: 这是我从xml文件检索数据的方法: function MakeXMLHTTPCall() { var xmlHttpObj; xmlHttpObj = CreateXmlHttpRequestObject(); if (xmlHttpObj) { xmlHttpObj.open("GET", "http:// " + location.host + "/XmlHttpExample1/DataFile.xml

我正在学习ajax并尝试在页面上显示一些数据:

这是我从
xml
文件检索数据的方法:

function MakeXMLHTTPCall() {
    var xmlHttpObj;
    xmlHttpObj = CreateXmlHttpRequestObject();
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", "http:// " + location.host + "/XmlHttpExample1/DataFile.xml", true);

        xmlHttpObj.onreadystatechange = function () {

            if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
                document.getElementById("divResults").innerHTML = xmlHttpObj.responseText;
            }
        }
        xmlHttpObj.send(null);
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<Customers>
  <Customer>
    <Firstname>John</Firstname>
    <Lastname>Doe</Lastname>
    <email>john.do@test.com</email>
  </Customer>
  <Customer>
    <Firstname>Alan</Firstname>
    <Lastname>Anonymous</Lastname>
    <email>anon@ymous.com</email>
  </Customer>
  <Customer>
    <Firstname>Marvin</Firstname>
    <Lastname>Martian</Lastname>
    <email>marvin@mars.com</email>
  </Customer>
</Customers>
这是一个
html
片段,定义了将保存数据的
div
元素:

<form id="form1" runat="server" method="post">
<div>
    <input type="button" onclick="MakeXMLHTTPCall();" value="Text XMLHTTP Call" />
    <br />
    <br />
    <div id="divResults">{no results}</div>
</div>
</form>
这是我的
xml
文件:

function MakeXMLHTTPCall() {
    var xmlHttpObj;
    xmlHttpObj = CreateXmlHttpRequestObject();
    if (xmlHttpObj) {
        xmlHttpObj.open("GET", "http:// " + location.host + "/XmlHttpExample1/DataFile.xml", true);

        xmlHttpObj.onreadystatechange = function () {

            if (xmlHttpObj.readyState == READYSTATE_COMPLETE) {
                document.getElementById("divResults").innerHTML = xmlHttpObj.responseText;
            }
        }
        xmlHttpObj.send(null);
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<Customers>
  <Customer>
    <Firstname>John</Firstname>
    <Lastname>Doe</Lastname>
    <email>john.do@test.com</email>
  </Customer>
  <Customer>
    <Firstname>Alan</Firstname>
    <Lastname>Anonymous</Lastname>
    <email>anon@ymous.com</email>
  </Customer>
  <Customer>
    <Firstname>Marvin</Firstname>
    <Lastname>Martian</Lastname>
    <email>marvin@mars.com</email>
  </Customer>
</Customers>

约翰
雌鹿
厕所。do@test.com
艾伦
匿名的
anon@ymous.com
马文
火星人
marvin@mars.com
我调试了代码<代码>XMLHttpRequest对象已创建。问题是,数据不显示


我做错了什么?有什么建议吗?

听起来你需要做一些调试。在这种设置中,可能会出现多种错误。因此,请尝试完成这些步骤,并确定您的代码实际可以工作多少。您将在步骤3中找到该错误:)

  • 检查函数MakeXMLHTTPCall()是否实际被调用。发出警报(1);语句,然后单击按钮。如果您没有得到带有文本“1”的弹出窗口,则此函数甚至不会被调用。这很可能是由于javascript中的某些语法错误造成的
  • 现在您已经确定调用MakeXMLHTTPCall()了,当您单击该按钮时,请检查您的if语句。地点警报(1);作为if语句中的第一件事。如果没有弹出窗口,那么xmlHttpObj的创建就不正确。因此,请检查您的CreateXmlHttpRequestObject()是否正常工作
  • 检查您正在获取的url是否确实存在。你会发现,你不小心把一个空间放错了地方。也就是说,“http://”应该是“http://”

  • 我希望你不介意我给你解释了我是如何发现这个bug的。不知道如何调试代码是非常令人沮丧的。

    检查浏览器中的控制台是否有错误。此外,您还可以使用类似于检查请求的工具来确保正确检索XML文件。实际上,我对其进行了调试,发现在调用该文件的行中失败,但没有注意到额外的空间:)。谢谢