jquery ajax post数据给servlet无法收到的原因

本文探讨了使用jQuery的AJAX方法从前端向后端发送POST请求的具体实现方式,并详细解释了如何设置contentType属性以便正确地从Java后端读取请求数据。通过对比request.getParameter()与request.getInputStream()两种获取请求数据的方法,阐述了contentType设置对于数据接收的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前台js

$(document).ready(function(){
	$("#test").click(function(){
		var url = "function?method=echo";
		var data = {
			keyword_query: "Tim Berners-Lee"
		};
		$.ajax({
		   url: url,
		   type: "POST",
		   data: data,
//		   dataType: 'json',
		   contentType: "text/html",






		   success: function(referenceSet){
		   		$("body").append("referenceSet: \n" + "<h3>" + (referenceSet) + "</h3>");
		   },
		   error: function(XMLHttpRequest, textStatus) {
		   		$("body").append("textStatus: \n" + "<h3>" + textStatus + "</h3>");
		   }
		});
	});
	
});

 后台java

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		if(request.getParameter("method").equals("echo")) {
		    BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while((line = br.readLine())!=null){
                sb.append(line);
            }
			response.getWriter().print(sb);
		}
	}

 红色字体部分

contentType: "text/html",





我一开始没有加上,这样后台的servlet用

request.getParameter(arg0)

可以得到数据,但是我想利用

request.getInputStream()

获得前台的全部数据就不可以了,即post的所有

后来上网查看了下,虽然没有我的相同的问题,但是有java的,jsp的类似的问题,原来是要设置

contentType: "text/html",





看来原理上还要多下功夫啊,调试了半天的代码,原来是因为这个。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值