我想要一个servlet来处理GET请求并返回一个字符串。
非常简化的版本是:
public class handlequery extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text");
PrintWriter out = response.getWriter();
out.println("videoid");
}
}
但回调中的返回data
(我在下面检查如下)是 - object XML Document
。
$.get("handleq", function(data, textStatus) {
alert("Done, with the following status: " + textStatus + "." +
" Here is the response: " + data);
});
当我得到object XML Document
时,有人可以告诉我数据为videoid
的原因吗?
答案 0 :(得分:3)
据我所知,没有这样的内容类型只是“文本”,所以它可能默认为XML。
将行更改为:
response.setContentType("text/plain");
答案 1 :(得分:2)
text
本身不是有效的内容类型。我建议你改用text/html
:
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("videoid");
并在客户端调用$.get()中指定该内容类型:
$.get("handleq", function(data, textStatus) {
alert("Done, with the following status: " + textStatus
+ ". Here is the response: " + data);
}, "html");
答案 2 :(得分:2)
get
上的jquery文档说:
成功回调函数传递返回的数据,该数据将是XML根元素,文本字符串,JavaScript文件或JSON对象,具体取决于响应的MIME类型。它还传递了响应的文本状态。
这意味着servlet返回的数据格式取决于响应的HTTP Content-Type。您正在设置的文本“text”不是有效的MIME类型。因此,jQuery将无法识别此格式,并将其解释为Javascript端的XML文档。您想要的正确MIME类型是“text / plain”。
尝试
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.println("videoid");
out.close();
}
然后你应该收到“videoid”而不是XML文档。
您还应该向jQuery暗示您收到的是“文字”,而不是您的回复中的任何其他内容:
$.get("handleq", function(data, textStatus) {
alert("Done, with the following status: " + textStatus + "." +
" Here is the response: " + data);
}, "text");