我有一个web应用程序,目前在一个网页中托管一个applet。applet连接到Tomcat Servlet并发送请求。如果我的解决方案可以在客户机上使用Javascript而不是Java applet,那么在某些环境中会更方便。但是这需要Javascript向Tomcat Servlet发送一个POST。
web页面由相同的web服务器提供服务-实际上是相同的Tomcat实例。但是applet将请求发送到不同的Servlet。
Javascript基本上需要定期查询Servlet,并根据响应调用Javascript函数。
这可能吗?
如果是的话,有什么关于如何开始的提示吗?
是的,JavaScript可以向任意web服务器发送POST请求。如果你有servlet的控制权,你可以通过设置access-control-allow-origin
属性来避免所有的跨站点脚本限制。
AJAX是web社区的一个术语,指的是JavaScript + HTTP请求。我推荐这个来自MDN的AJAX教程。我还推荐jQuery的AJAX库。
即使服务器设置正确,某些版本的Internet Explorer也会给您带来麻烦。下面是我用来覆盖所有浏览器的JS函数:
/**
* Wraps jQuery's AJAX, adds X-Domain support for IE
*/
function xDomainAJAX (url, settings) {
if ($.browser.msie && parseInt($.browser.version, 10) >= 8 && XDomainRequest) {
// use ms xdr
var xdr = new XDomainRequest();
xdr.open(settings.type, url + '?' + $.param(settings.data));
xdr.onprogress = function() {};
xdr.onload = function() {
settings.success(xdr.responseText);
};
xdr.onerror = settings.error;
xdr.send();
} else {
// use jQuery ajax
$.ajax(url, settings);
}
}
支持"CORS"跨域资源共享,允许浏览器端脚本调用其他服务器。
也有较旧的方法,如JSONP或在主页上的IFrame中有目标域的页面,通过窗口在两个页面之间进行通信。PostMessage/IFrame name.
如果你不需要响应- POST或GET可以执行到任何域
这绝对是可能的。我建议使用jQuery,因为它在一个易于使用的函数中提供了这个功能:http://api.jquery.com/jQuery.post/。注意,这个链接有使用$.post()和$.ajax()的示例。都是有效的,$。Post只是$.ajax的简写版本。
注意,在这两个例子中,您给它一个回调函数来处理响应。