ajax提交数据给后台,后台可以执行并且处理,用PrintWrite的write()方法发给前台,前台却接收为““

想用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的小伙伴可能会漏掉这个细节

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值