用一个请求接收多个javascript响应



如何使用javascript从服务器接收多个响应。

我有一个需求,其中一个请求是一次性发布的数据和迭代次数,在服务器端处理请求的迭代次数。在每次迭代完成时,服务器发送回响应。因此,对于一个请求和10次迭代,我的java脚本需要接收10个响应并将其显示在网页上。是否有任何方法,我可以处理这个使用javascript。我不能使用任何其他技术。

现在我正在使用下面的方法

    function showResponse(){
    xmlHttp = GetXmlHttpObject();
    var dataString = document.getElementById("request-parameters").value;
    var iterations = document.getElementById("iterations").value;
    if(xmlHttp==null){
        alert("your browser does not support AJAX!");
    }
    var url = "http://localhost:8080/servlet/requestServlet";
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("POST",url,true);
    xmlHttp.send(dataString);
}
function GetXmlHttpObject(){
    var xmlHttp=null;
    try{
        //Firefox, Opera, Safari
        xmlHttp=new XMLHttpRequest();
    }catch(e){
        //IE
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}
function stateChanged(){
    if(xmlHttp.readyState==4){
        if(xmlHttp.status == 200){
             var resp = xmlHttp.responseText;
             var responseDiv = document.getElementById("response");
            responseDiv.innerHTML=responseDiv.innerHTML+resp1[1];
            }
    }
}

我不能修改这个方法。

仅使用'basic javascript'您无法做到这一点。

它的工作原理是这样的:客户端发送请求,服务器返回'某事'。由于多种原因,服务器不能简单地将数据发送回该客户机。答:除了请求的第一个"调用"之外,双方之间没有"链接",但客户端只是等待响应。B:剧本不指望别人回复。

例如,你需要的是一个websocket。通过这种方式,客户机可以监听服务器并实际处理从服务器发送到客户机的数据。

简而言之:

Javascript是这样工作的:

客户端->服务器|服务器响应

对于套接字,可以有:

Client -> ServerServer -> Client

你可以使用某种"javascript",即使它是一种不同的技术。像NodeJS。

另一种方法是创建一个循环。与其发布具有大量迭代的数据集,不如在JS中迭代它,并在每次迭代中将其发送到服务器以实际"执行"数据。

1) HTTP尝试请求一次到一个控制器,然后从其他控制器得到答案,您可以使用jQuery或原生XmlHttpRequest(它不是一个请求)。

 $.get("server/controllerJob",{data:"data"});
 var askInterval = window.setInterval(function(){
         $.get("server/askAnswerFromJob",{data:"data"}).done(function( data ) {
          if(data.complete){
                /** do staff**/
               window.clearInterval(askInterval);
          }else{
             /** do staff**/
          }
      });
    },200);

2) webSocket或者试着找一些关于WebSocket的文档,WebSocket是一个连接多个请求和响应(全双工连接流)的技术。

您还需要其他服务器控制器实现,请参阅websocket支持浏览器

注意ws:。这是WebSocket连接的新URL模式。也有wss:安全WebSocket连接相同的方式https:用于安全HTTP连接

我只是注意到附带的"示例"web应用程序Tomcat 7包含了关于如何使用WebSocket的4个完整示例(针对java开发人员)

var connection = new WebSocket('ws://server/yourService',['soap','xmpp']);  
    connection.onopen = function () {
      connection.send('ask'); // Send the message to server
    };
     //Each time on new messages from server, this callbacks will be executed (depends on result)
    // Log errors from server
    connection.onerror = function (error) {
      console.log('WebSocket Error ' + error);
    };
    // Get messages from the server
    connection.onmessage = function (e) {
      console.log('Answer: ' + e.data);
    };

相关内容

  • 没有找到相关文章

最新更新