$.ajax Post 数据指定类型为application/json 的时候,后台无法直接request到数据
2013-01-16 09:55
801 查看
在$.ajax代码的时候,两端差不多的代码,一段可以提交,另一段在后台怎么样也无法request到ajax post的数据:
仔细对比了两段代码,发现无法Request的方法,前段ajax代码里多了这么一句话:contentType:'appcalition/json;charset=utf-8'
用HttpWachter查看到,提交的时候Content-Type也是不一样的,ajax里面不指定contentType的截图如下:
而加了contentType的截图如下:
在网络上搜索了一下:
在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。
当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1& amp; amp;name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。
当action为post时候,浏览器把form数据封装到http body中,然后发送到server
Post提交的数据:
结论:Post提交的数据,类型不可以为application/json.....个人推测Post是以流的方式提交,而Request["keyWorkd"]方式根本无法获取到Stream上来的数据。
后台可以直接通过代码获取到post上来的stream(流)
$.ajax({ type: "POST", url: window.prefixURL + '/CalendarHandler/InsertCalendarEventData2', contentType: 'application/json;charset=utf-8', data: { "data": myjson.stringify(data) }, dataType: 'json', success: function (doc) {
仔细对比了两段代码,发现无法Request的方法,前段ajax代码里多了这么一句话:contentType:'appcalition/json;charset=utf-8'
用HttpWachter查看到,提交的时候Content-Type也是不一样的,ajax里面不指定contentType的截图如下:
而加了contentType的截图如下:
在网络上搜索了一下:
multipart/form-data和application/x-www-form-urlencoded的区别
FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”。然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。
当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1& amp; amp;name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。
当action为post时候,浏览器把form数据封装到http body中,然后发送到server
Post提交的数据:
结论:Post提交的数据,类型不可以为application/json.....个人推测Post是以流的方式提交,而Request["keyWorkd"]方式根本无法获取到Stream上来的数据。
后台可以直接通过代码获取到post上来的stream(流)
StreamReader stream=request.getInputStream();
相关文章推荐
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
- 使用ajax返回json类型数据的时候无法进入success可能的原因
- Maven项目:Spring MVC + Ajax + Json + RequestBody:POST后台服务器接收前端JSON数据并注解到POJO内
- 利用HttpWebRequest以POST方式提交Json数据-后台实现不同平台间的数据传输
- 通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法
- 通过Ajax post Json类型的数据到Controller
- 通过Ajax post Json类型的数据到Controller
- 解决ASP.NET MVC(post数据)Json请求太大,无法反序列化(The JSON request was too large to be deserialized)
- $.ajax contenType是appliation/json的时候,spring mvc后台无法接受data参数
- java 读取 ajax post 到后台的Json数据
- C# winform端 通过HttpWebRequest进行post和get请求,数据格式为json,后台java端接收,其中有关传输特殊字符(\t,\r,',\n,n)等处理
- 解决Volley框架下JsonObjectRequest以POST提交数据,服务端无法获取数据的问题。
- 当使用ajax 由前台像后台post 数组类型数据的一些问题(基于springboot)
- json对象load到表单中,这样后台Ajax过来的数据就可以直接加载
- 利用HttpWebRequest通过POST Json数据在.net后台实现不同平台间的数据传输
- ashx 获取ajax Post到后台json数据
- ajax请求当发送post方式application/json格式数据,url后面又带有参数的时候
- 通过Ajax进行POST提交JSON类型的数据到SpringMVC Controller的方法
- angular使用post发送数据的时候后台无法接收
- SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析