想用ajax的post方法把数据发给后台Servlet,代码如下:
$.ajax({
url:"QueryBooksAll",
type:"post",
data:"", //提交的数据
dateType:"json",
contentType:"application/json",
success:function(data){
//alert(data);
vm.books=data;
//console.log(vm.books);
},
error:function(a,b,c){
alert(c.message);
}
});
如果加了dateType:“json"还会报Unexpected end of JSON input,删了dateType:“json"之后,data就为””。
在后台设个断点,进去之后books有值,但是返回不到前台去,一直在网上搜索解决方案,搞了几个小时还是没弄好,最后抱着试一试的心态**在doPost代码块里面加了个doGet(request, response);**发现终于可以得到数据了。
后台改之前代码:
@WebServlet("/QueryBooksAll")
public class QueryBooksAll extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public QueryBooksAll() {
super();
// TODO Auto-generated constructor stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
BufferedReader br = request.getReader();
String s = "", line = "";
while ((line = br.readLine()) != null){
s += line;
}
br.close();
String books = "";
System.out.println("内容:"+s);
if (s.equals("")){
books = FastJsonUtil.toJSONString(BookDao.getBooksInfoAll());
} else {
books = FastJsonUtil.toJSONString(BookDao.getBookInfoByConn(s));
}
PrintWriter out = response.getWriter();
out.write(books);
System.out.println(books);
out.close();
}
}
改之后:
@WebServlet("/QueryBooksAll")
public class QueryBooksAll extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public QueryBooksAll() {
super();
// TODO Auto-generated constructor stub
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
BufferedReader br = request.getReader();
String s = "", line = "";
while ((line = br.readLine()) != null){
s += line;
}
br.close();
String books = "";
System.out.println("内容:"+s);
if (s.equals("")){
books = FastJsonUtil.toJSONString(BookDao.getBooksInfoAll());
} else {
books = FastJsonUtil.toJSONString(BookDao.getBookInfoByConn(s));
}
PrintWriter out = response.getWriter();
out.write(books);
System.out.println(books);
out.close();
}
}
原来idea工具创建的Servlet不会自动在在doPost()里添加doGet(request, response);而eclipse会自动添加,所以如果刚从eclipse转idea的小伙伴可能会漏掉这个细节