繁体   English   中英

Ajax:未从XML文件检索数据

[英]Ajax: Data is not retrieved from XML file

我正在学习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);
    }
}

这是一个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>

这是我的CreateXmlHttpRequestObject()方法:

function CreateXmlHttpRequestObject() {

    var xmlHttpObj;
    if (window.XMLHttpRequest){
            xmlHttpObj = new XMLHttpRequest();
    }
    else {
        try {
            xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {
            xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
        }
    }

    if (window.ActiveXObject) {
        try{
            xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e){
            xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
        }
    }
    return xmlHttpObj;
}

var READYSTATE_UNINITILIZED = 0;
var READYSTATE_LOADING = 1;
var READYSTATE_LOADED = 2;
var READYSTATE_INTERACTIVE = 3;
var READYSTATE_COMPLETE = 4;

这是我的xml文件:

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

我调试了代码。 XMLHttpRequest对象已创建。 问题是,数据不显示。

我究竟做错了什么? 有什么建议么?

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

  1. 检查是否确实调用了函数MakeXMLHTTPCall()。 发出警报(1); 函数顶部的语句,然后单击按钮。 如果没有出现带有文本“ 1”的弹出窗口,则甚至不会调用此函数。 这很可能是由于javascript中某处的语法错误所致。
  2. 既然您已经确定,将使MakeXMLHTTPCall()被调用,当您单击按钮时,检查您的if语句。 放置警报(1); 作为if语句中的第一件事。 如果没有弹出,则说明您的xmlHttpObj创建不正确。 因此,请检查您的CreateXmlHttpRequestObject()以确保其正常工作。
  3. 检查您要提取的网址是否确实存在。 您会发现,您不小心放错了空间。 即“ http://”应为“ http://”

我希望您不介意我给您解释了我如何发现该错误。 不知道如何调试代码非常令人沮丧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM