Javascript 无法使用XMLHttpRequest对象获取数据

Javascript 无法使用XMLHttpRequest对象获取数据,javascript,ajax,xml,Javascript,Ajax,Xml,我试图从与HTML文件位于同一目录的XML文件中获取数据,但似乎没有返回任何数据(而且我不确定以后如何呈现数据)。下面是脚本(以及我试图解析的XML文件中的示例记录)。谢谢你的帮助 function getFromAndDoThis(r, callback, opt="") { var okay = true; var xhr = new XMLHttpRequest(); if (xhr) { xhr.addEventListener("

我试图从与HTML文件位于同一目录的XML文件中获取数据,但似乎没有返回任何数据(而且我不确定以后如何呈现数据)。下面是脚本(以及我试图解析的XML文件中的示例记录)。谢谢你的帮助

   function getFromAndDoThis(r, callback, opt="") {

    var okay = true;

    var xhr = new XMLHttpRequest();

    if (xhr) {  
        xhr.addEventListener("readystatechange", function() {callback(opt);}, false);
        xhr.open("GET", r, true);
        xhr.send(null);
    }
    else {
        okay = false;
    }

    return okay;

}

/* callback function */

function displayCurriculum(which) {

    var data = null;
    var chapters, docroot;

    data = extractXMLData(xhr);

    if (data) {

        chapters = data.getElementsByTagName("Chapter");
        docroot = document.getElementsById("contentarea")[0];

        var i = 0;

        /* put each chapter and synopsis (if any) in nodes, and put these nodes in the DOM */       

        for (i=0; i < chapters.length; i++) {

            var chapter = chapters[i];
            var synopsis = chapter.firstChild;

            var div = document.createElement("div");

            var pc = document.createElement("p");
            var ps = document.createElement("p");

            div.setAttribute("id", toString(i));

            pc.innerHTML = chapter.innerHTML;
            ps.innerHTML = synopsis.innerHTML;

            /* nodes are filled. now attach them to the DOM */

            div.appendChild(pc);
            div.appendChild(ps);

            body.appendChild(div);

        } // end for

    } // end if
    else {
        alert("No data.");
    }

} 
函数getFromAndDoThis(r,回调,opt=”“){ var-ok=true; var xhr=new XMLHttpRequest(); 如果(xhr){ addEventListener(“readystatechange”,function(){callback(opt);},false); xhr.open(“GET”,r,true); xhr.send(空); } 否则{ 好=假; } 返回OK; } /*回调函数*/ 功能显示课程(其中){ var数据=null; var章,docroot; 数据=extractXMLData(xhr); 如果(数据){ 章节=data.getElementsByTagName(“章节”); docroot=document.getElementsById(“contentarea”)[0]; var i=0; /*将每个章节和概要(如果有)放在节点中,并将这些节点放在DOM*/ 对于(i=0;i XML记录:

<?xml version="1.0"?>
<Curriculum name="algebra">
    <Chapter>
        Numbers
        <Synopsis>
            Real numbers, the number line, arithmetic, factoring, decimals, exponents, radicals, and complex numbers.
        </Synopsis>
    </Chapter>
</Curriculum>

数字
实数、数列、算术、因子分解、小数、指数、根和复数。

您的回调函数正在尝试读取
xhr
,但变量超出范围。您需要将其作为参数传递给回调函数。

我看不到您正在加载XML。 您可以通过Ajax实现这一点

$.ajax({
    type: "GET",
    url: "yourxml.xml",
    dataType: "xml",
    success: function(displayCurriculum){
    }
});

问题代码中的第一个函数加载XML…并且这个问题没有标记为
jquery
,因此jquery答案不合适。