我的文件js调用多个http请求时出现问题。 我有一个按钮,调用我的文件visualizzaReport.js
中的VisualizzaReport函数这是函数VisualizzaReport(select是用户的ID)
function visualizzaReport(select){
reportUtente(select)
loadPianificazione(select)
}
这里的函数reportUtente(select)
function reportUtente(select) {
var url = "../loadReportUtenteServlet?";
url += "type=perso_atti&value=" + select.value;
xmlhttp.onreadystatechange = handlerForReportUtente;
xmlhttp.open("GET", url);
xmlhttp.send("");
}
这里的函数loadPianificazione(选择)
function loadPianificazione(select) {
var url = "../loadPianificazione2Servlet?";
url += "type=pianificazioni&value=" + select.value;
xmlhttp.onreadystatechange = handlerForPianificazioneUtente;
xmlhttp.open("GET", url);
xmlhttp.send("");
}
我的问题是函数reportUtente已启动但尚未生效,因为它似乎被loadPianificazione函数替代。 我怎样才能在reportUtente完成执行时调用loadPianificazione?
答案 0 :(得分:0)
在您的情况下,我建议您使用 jQuery 或 AngularJs 来实现此目的。
jQuery 示例:
$.get('url1.com', function(){
$.get('url2.com');
})
只有在第一次请求完成后,您才会请求 url2.com 。
答案 1 :(得分:0)
您似乎正在使用单个全局xmlhttp
变量。
然后你调用两个用它做事的函数。第二个请求将在第一个请求完成之前覆盖xmlhttp.onreadystatechange
,因此您将为每个请求调用第二个函数。
XMLHttpRequest
的新实例,并将其保存在本地范围内,这样它就不会干扰其他实例。
function reportUtente(select) {
var url = "../loadReportUtenteServlet?";
url += "type=perso_atti&value=" + select.value;
var xmlhttp = new XMLHttpRequest(); // New instance here
xmlhttp.onreadystatechange = handlerForReportUtente;
xmlhttp.open("GET", url);
xmlhttp.send("");
}
您尚未共享handlerForReportUtente
,但它应该类似于:
function handlerForReportUtente() {
alert(this.responseText); // Use `this` to get the right XHR object
}