如何使用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];
}
}
}
我不能修改这种方法。是否可以使用XmlHttp对象完成它。
答案 0 :(得分:1)
只有'基本的javascript'你不能这样做。
它的工作原理如下:客户端发送请求,服务器返回'某事'。由于多种原因,服务器不能简单地将数据发送回此客户端。答:除了请求的第一个“呼叫”之外,双方之间没有“链接”即连接,但客户端只是等待响应。 B:脚本不希望得到其他答案。
你需要的是一个websocket例如。这样,客户端可以监听服务器并实际处理从服务器发送到客户端的数据。
简而言之:
Javascript的工作原理如下:
客户 - >服务器|并且服务器回复
对于插座,您可以:
客户 - >服务器 服务器 - >客户端
你可以使用某种“javascript”甚至是一种不同的技术......比如NodeJS。
另一种方法是制作一个循环。不是发布具有大量迭代的数据集,而是在JS中迭代它,并且每次迭代都将其发送到服务器以实际“执行”您的数据。
答案 1 :(得分:1)
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 documentation的东西,它是techonolgy,其中一个连接有多个请求和响应(全双工连接流)。
您还需要其他服务器控制器实现,并参阅websocket supported browsers
注意ws:这是WebSocket连接的新URL模式。 还有wss:对于安全的WebSocket连接,方式与https相同: 用于安全的HTTP连接
我只注意到"示例"附带的网络应用程序 Tomcat 7包含4个完整的如何使用WebSocket的示例(适用于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);
};