2015-11-02 111 views
0

我的文件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?

回答

0

在你的情况,我建议您使用jQuery的AngularJs这个目的。

jQuery的例如:

$.get('url1.com', function(){ 
    $.get('url2.com'); 
}) 

你会要求url2.com只有当第一个请求已完成。

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 
}