Ajax 请求 servlet 传回来的 xhr.responseText是一个json字符串,但打印出的是html文件内容
这个问题可能是因为你的Servlet返回的数据被当作HTML处理了,而不是作为纯文本或JSON。为了确保Servlet返回的数据被正确解析为JSON,你需要设置响应的内容类型为application/json
。
以下是一个简单的Servlet示例,它返回JSON格式的字符串:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JsonServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 创建要返回的JSON数据
String jsonData = "{\"name\":\"John\", \"age\":30}";
// 设置响应内容类型为JSON
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
// 将JSON数据写入响应
response.getWriter().write(jsonData);
}
}
确保在Ajax请求中正确处理返回的数据:
$.ajax({
url: '/json-servlet',
type: 'GET',
dataType: 'json', // 指定预期的数据类型为JSON
success: function(data) {
console.log(data); // 这里的data已经是解析过的JSON对象
},
error: function(xhr, status, error) {
console.error("An error occurred: " + status + "\nError: " + error);
}
});
如果你仍然遇到问题,检查Servlet的配置以及确保Ajax请求中的dataType
是正确设置的。如果dataType
设置错误,jQuery可能无法正确解析返回的数据。
评论已关闭