我正在为客户端使用javascript和服务器端使用servlet进行项目。我正在尝试实现一种实时更新客户端信息的方法。即当客户端更新Web应用程序中的某些信息时,其他客户端也将看到更新。我发现长轮询是一种很好的技巧。这是我试图开始工作的代码。
function poll() {
setTimeout(function() {
$.ajax({
type: "GET",
url: "server",
contentType: "application/json",
data: {
type: "update",
card: "string"
},
success: function(data) {
alert(data);
},
error: function(data) {
alert('eroor');
},
dataType: "json",
complete: poll });
}, 5000);
}
我正在尝试每5秒向服务器发送一个请求,并获得有新更新的响应。但是在我在网上看到的所有骨架代码中,都没有设置data:
。如果没有设置它,服务器将如何知道它收到的请求类型,因为还有其他类型的请求。但是当我设置data:
时,没有从客户端发送请求。但是没有设置data:
请求就会被发送到服务器。设置data:
是错误的吗?没有它,我怎么能让servlet知道请求的类型?
据我所知,像http://php.net/manual/en/function.date.php中所提到的,长时间的民意调查不是我想要做的。但任何人都可以解释我应该做什么以及我做错了什么。
答案 0 :(得分:0)
由于您发出了GET
请求,因此数据值将作为URL参数附加到URL。然后,您的servlet必须使用request.getParameter("type")
和request.getParameter("card")
从请求中提取信息。
如果您认为没有发送请求,请首先检查控制台是否有错误,然后查看浏览器开发者工具中的网络通信面板。
答案 1 :(得分:0)
数据:
问题是如何设置数据。如果你想发送json对象,你必须在发送之前进行字符串化,如下所示。
$.ajax({
url: url,
type: "POST",
data: JSON.stringify(data),
contentType: "application/json",
complete: callback
});
如果没有它,我怎么能让servlet知道请求的类型?
你的意思是什么?知道contentType?如果是,请按上述方式发送contentType参数。
据我所知,在这里提到的长期民意调查不是我想做的事情。但任何人都可以解释我应该做什么以及我做错了什么。
是。这不是一个长期的民意调查。这是您每5秒向服务器发送一次请求的方式。无论如何,服务器应该支持长轮询。