AJAX POST请求中参数以form data和request payload形式在servlet
发布时间:2020-12-15 21:29:38 所属栏目:百科 来源:网络整理
导读:之前写了一个post请求如下: $.ajax({ url:"register", type:"POST", contentType:"text/json;charset=UTF-8", data:{ "useringId":useringId }, error : function() { alert('发生错误,请重试!'); }, success:function(data){ if(data.status==1){ $(_thi
之前写了一个post请求如下: $.ajax({ url:"register",type:"POST", contentType:"text/json;charset=UTF-8", data:{"useringId":useringId }, error : function() { alert('发生错误,请重试!'); }, success:function(data){ if(data.status==1){ $(_this).parent().html("<span>已转为正式用户</span>"); } else if(data.status==2){ alert("后台错误!"); } } }); 请求报400,一看参数,发现useringId这个参数在request payload中。大致如下:
百度后得知,这是由于contentType引起的“误会”。
jquery在执行post请求时,会设置Content-Type为application/x-www-form-urlencoded,所以服务器能够按键值对方式正确解析,而使用原生ajax请求,如果不显示的设置Content-Type,那么默认是text/plain,或设置contentType不是application/x-www-form-urlencoded,这时服务器就不知道怎么解析数据了,所以才只能通过获取原始数据流的方式来进行解析请求数据。
解析方式如下:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |