同一个js文件发出的多个http请求
问题描述:
我的文件js有一个问题,它调用了多个http请求。 我有一个按钮,调用该函数VisualizzaReport这是在我的文件visualizzaReport.js同一个js文件发出的多个http请求
下面是函数VisualizzaReport(选择是用户的ID)
function visualizzaReport(select){
reportUtente(select)
loadPianificazione(select)
}
这里的功能reportUtente(选择)
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?
答
在你的情况,我建议您使用jQuery的或AngularJs这个目的。
jQuery的例如:
$.get('url1.com', function(){
$.get('url2.com');
})
你会要求url2.com只有当第一个请求已完成。
答
您似乎在使用单个全局变量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
}