Java 延迟ajax中的xmlHTTPresponse,直到从后端生成结果

Java 延迟ajax中的xmlHTTPresponse,直到从后端生成结果,java,jquery,ajax,Java,Jquery,Ajax,我有这个用于ajax的java脚本代码,我很难得到响应 xmlhttp.status始终变为0。我使用repeatCallHr Servlet并从jsp页面获取参数,如下所示 function loadResults() { var tt = document.getElementById("StartDate"); alert(tt); if (xmlhttp) { var query = "generateResults?name=" + document.g

我有这个用于ajax的java脚本代码,我很难得到响应

xmlhttp.status始终变为0。我使用repeatCallHr Servlet并从jsp页面获取参数,如下所示

function loadResults() {
var tt = document.getElementById("StartDate");
alert(tt);
if (xmlhttp) {
    var query = "generateResults?name="
            + document.getElementById("name").value
            +"&startDate="+document.getElementById("StartDate").value
            +"&startTime="+document.getElementById("StartTime").value;
    xmlhttp.open("GET", query, true);
    xmlhttp.onreadystatechange = loadStallsResponse;
    xmlhttp.send(null);
} else {
    alert("Browser not supported!");
}}

function loadStallsResponse() {
alert("come here");
alert(xmlhttp.readyState);
if (xmlhttp.readyState == 4) {
    alert("status is :"+xmlhttp.status);
    if (xmlhttp.status == 200) {
        resultList = [];
        if (xmlhttp.responseText.indexOf("Error") == -1) {
            alert("come to inside of status::")
            console.log(xmlhttp.responseText);
            stallList = $.parseJSON(xmlhttp.responseText);
            populateStallData();
        } else {
            alert(xmlhttp.responseText);
        }
    } else {
        alert("Error in loading salesman data");
    }
}}

function populateStallData() {
var table = "<tr><th>Date</th><th>Time</th><th>Skill</th><th>Total Call</th><th>Unique Calls</th><th>Repeat Calls</th></tr>";
for (var i = 0; i < resultList.length; i++) {
    table += "</td><td width='140'>"
            + resultList[i].date
            + "</td><td width='140'>"
            + resultList[i].time
            + "</td><td width='140'>"
            + resultList[i].skill
            + "</td><td width='140'><a style='color: -webkit-link; text-decoration: underline; cursor: auto;' href='http://"
            + resultList[i].totalCall
            + "</td><td width='140'>"
            + resultList[i].uniqueCall
            + "</td><td width='140'>"
            + resultList[i].repeatCall
            + "</td></tr>";
}
document.getElementById("ResultTable").innerHTML = table;}
函数加载结果(){
var tt=document.getElementById(“StartDate”);
警报(tt);
if(xmlhttp){
var query=“generateResults?name=”
+document.getElementById(“名称”).value
+“&startDate=“+document.getElementById(“startDate”).value
+“&startTime=“+document.getElementById(“startTime”).value;
open(“GET”,query,true);
xmlhttp.onreadystatechange=loadStallsResponse;
xmlhttp.send(空);
}否则{
警报(“不支持浏览器!”);
}}
函数loadStallsResponse(){
警惕(“过来”);
警报(xmlhttp.readyState);
if(xmlhttp.readyState==4){
警报(“状态为:“+xmlhttp.status”);
if(xmlhttp.status==200){
结果列表=[];
if(xmlhttp.responseText.indexOf(“错误”)=-1){
警报(“进入状态::”的内部)
log(xmlhttp.responseText);
失速列表=$.parseJSON(xmlhttp.responseText);
populateStallData();
}否则{
警报(xmlhttp.responseText);
}
}否则{
警报(“加载销售人员数据时出错”);
}
}}
函数populateStallData(){
var table=“DateTimeSkillTotal CallUnique CallsRepeat Calls”;
对于(var i=0;i+“请添加loadStallsResponse()的内容我通过添加loadStallsResponse()编辑了代码看起来没问题。每次响应状态更改时都会运行LoadStallsResponse。因此,从您的问题中我了解到,您从未收到就绪状态4?也不是在5分钟后?在乞讨时重新将接收状态设置为4,但状态始终为0,而不是200。这就是问题。虽然您的延迟得到了很好的实现,但您的请求不知何故仍然为4s被中断,这就是您收到0的原因。原因可能是众多原因之一。对此有一个很好的答案。请添加loadStallsResponse()的内容我通过添加loadStallsResponse()编辑了代码看起来没问题。每次响应状态更改时都会运行LoadStallsResponse。因此,从您的问题中我了解到,您从未收到就绪状态4?也不是在5分钟后?在乞讨时重新将接收状态设置为4,但状态始终为0,而不是200。这就是问题。虽然您的延迟得到了很好的实现,但您的请求不知何故仍然为4这就是你收到0的原因。原因可能是很多原因之一。这是一个很好的答案