【问题标题】:Response/Request between Javascript/Java ServletJavascript/Java Servlet 之间的响应/请求
【发布时间】:2011-05-03 15:46:48
【问题描述】:

我有一个简单的测试客户端-服务器应用程序。客户端是html/javascript,服务器-Java Servlet

首先我想测试请求/响应机制。因此我使用了一个简单的 cliet(jQuery) 代码:

$.get ("http://localhost:8081/TestProject/BasicServlet",
       function(data) {
          alert('Data:' +data);
       }
);

在服务器端:

protected void doGet(HttpServletRequest req, HttpServletResponse res) ... {
      String callBack = "TestCallback";
      res.setContentType("text/html");
      ServletOutputStream out = res.getOutputStream();
      out.write(callBack.getBytes("UTF-8"));
      out.flush();
}

所以,Servlet 捕获了来自客户端的请求,但是我的响应有问题,响应头看起来不错,带有字符属性,但我没有收到回调数据

作为 Firebug 中的响应,我有 3 个选项卡,标题、答案、HTML。答案和 HTML 为空

编辑: 我发现了一个问题:这是 Access-Control-Allow-Origin 违规。 感谢您的帮助!

【问题讨论】:

  • 你的 JavaScript 看起来无效(这是一个函数调用吗?() 在哪里?你如何期望一个没有任何键值的对象工作?),我没有知道$ 是什么。原型.js? Mootools?
  • 在萤火虫中查看响应中是否有“TestCallback”。
  • 啊,他做到了。不过,我的其余评论仍然适用。
  • 这是我帖子中的错字,因为我是从另一台计算机发布的,而我的代码在另一台计算机上
  • 开始学习如何使用调试器。

标签: java javascript jquery servlets


【解决方案1】:

根据这里的文档

http://download.oracle.com/javaee/6/api/javax/servlet/ServletResponse.html#getOutputStream

用于发送二进制数据。所以我的猜测是 Content-Type 标头被设置为一些 jQuery 无法识别的 MIME 类型。我建议您使用 FireBug 检查响应中的 Content-Type 标头是否仍然是“text/html”,或者使用

PrintWriter writer = res.getWriter();
writer.write(callBack);
writer.flush();

顺便说一句,使用PrintWriter 发送文本数据是推荐的方法。

【讨论】:

  • 我不认为 text/plain 是必需的。
【解决方案2】:

尝试 out.print() 而不是 out .write() 您将在 ajax 调用中得到响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2016-07-22
    • 2011-08-07
    • 1970-01-01
    相关资源
    最近更新 更多