2016-07-07 77 views
-1

我有一些我無法理解的如何在AJAX中做到這一點。我的頁面中有一個側欄和一個div「內容」。側邊欄由按鈕和它的onclick調用的函數經典:在另一個之後調用AJAX函數

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」中的內容。那麼,在這一點上一切都很好。現在這個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加載功能的loadXML()(「TheUrl」),這樣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> 

感謝你提前對你的幫助。

+0

您可以在另一個函數中調用一個函數。 – Developer

+0

您可以在'loadDoc'' onreadystatechanged'事件中調用'loadXML'。這很簡單。 – Venky

+0

如果您使用'jquery ajax',您將有權訪問'promises'。那麼你可以使用'done'或'fail'回調來執行'後期處理'。 – Venky

回答

1

您只需撥打的loadXML功能在第一AJAX調用的onreadystaechange事件,像這樣:

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

     } 
相關問題