在另一个之后调用AJAX函数

时间:2016-07-07 08:42:49

标签: javascript html ajax

我有些东西我无法理解如何在AJAX中完成它。我的页面中有一个侧边栏和div“内容”。侧边栏由按钮组成,并且点击它调用经典函数:

  function loadDoc(url) {
   var xhttp = new XMLHttpRequest();
   xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      document.getElementById("content").innerHTML = xhttp.responseText;
   }
  };
  xhttp.open("GET", url, true);
  xhttp.send();
 }

加载内容中按钮的“url”。好吧,在这一点上一切都好。现在这个网址之一,比如“TheUrl”,是一个包含标题等的文档,还有一个div“列表”,在这个列表中我想加载一个XML文件。我有功能

function loadXML() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
    myFunction(xhttp);
    }
  };
  xhttp.open("GET", "file.xml", true);
  xhttp.send();
}
function myFunction(xml) {
  var i;
  var xmlDoc = xml.responseXML;
  var table="<ul>";
  var x = xmlDoc.getElementsByTagName("ITEM");
  for (i = 0; i <x.length; i++) {
    table += "<li>" +
    x[i].getElementsByTagName("ELEMENT")[0].childNodes[0].nodeValue +
    "</li>"
    };
    table += "</ul>";
  document.getElementById("list").innerHTML = table;
} 

但我不知道如何在loadDoc(“TheUrl”)之后加载函数loadXML(),以便Xml数据出现在div内容中创建的div列表中......我很清楚? :d

我想在侧边栏中找到类似的内容:

<ul>
<li><button type="button" onclick=loadDoc("OtherUrl.html")>OtherUrl</button></li>
<li><button type="button" onclick=loadDoc("TheUrl.html").done(loadXML())>TheUrl</button></li>
</ul>

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你可以在第一个AJAX调用的 onreadystaechange 事件中调用 loadXML 函数,如下所示:

xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
          document.getElementById("content").innerHTML = xhttp.responseText;
          // call the other function
         loadXML();

       }