1

我有一个 Web 应用程序,它当前在网页中托管一个小程序。小程序连接到 Tomcat Servlet 并发送请求。如果我的解决方案可以在客户端使用 Javascript 而不是 Java 小程序,那么对于某些环境会更方便。但这需要 Javascript 向 Tomcat Servlet 发送 POST。

网页由同一个 Web 服务器提供服务 - 实际上是同一个 Tomcat 实例。但是小程序将请求发送到不同的 Servlet。

Javascript 基本上需要定期查询 Servlet,并根据响应调用 javascript 函数。

那可能吗?

如果是这样,有关如何开始的任何指示?

4

3 回答 3

1

是的,JavaScript 可以向任意 Web 服务器发送 POST 请求。access-control-allow-origin如果您可以控制 servlet,则可以通过设置属性来避免所有跨站点脚本限制。

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);
  }
}
于 2013-01-02T19:29:36.113 回答
0

支持“CORS”服务器跨域资源共享,让浏览器端脚本调用其他服务器。

还有一些较旧的方法,如 JSONP 或在主页的 IFrame 中在目标域上设置页面,并通过 window.PostMessage / IFrame 名称在 2 个页面之间进行通信。

如果您不需要响应 - 可以对任何域执行 POST 或 GET。

于 2013-01-02T19:30:27.830 回答
0

这绝对是可能的。我建议使用 jQuery,因为它具有易于使用的功能:http ://api.jquery.com/jQuery.post/ 。请注意,此链接包含使用 $.post() 和 $.ajax() 的示例。两者都是有效的,$.post 只是 $.ajax 的简写版本。

请注意,在这两个示例中,您都给它一个回调函数来处理响应。

于 2013-01-02T19:31:03.537 回答