概述
前后端数据交互主要有两种方式:get和post。其他restful风格的请求数据格式本质上都可以转为这两种形式,本文暂不讨论。
网址输入请求,超链接访问等都是get请求,请求数据格式固定单一,都是附加在url后面,中文和非ASII字符需要和后端协定统一编码,其他情况下如果参数形式拼接正确一般不会出问题。
post请求相对较复杂,本文重点论述。
post请求数据格式一般有以下几种方式:
方案一
不指定enctype。请求数据string(json格式)且数据没被编码。server端可以通过在controller方法中用Gson或者Jackson进行正常解析。
方案二
不指定enctype。请求数据对象且被编码。server端在controller方法中,需要通过stream reader方式获取,然后解析成对象使用。有一次看到群里有人问请求数据乱码,后端普通注解方式获取不到数据对象,不知如何解析就属于这种类型。 此种方法不推荐。
总结
上述两种都没指定enctype,也没手动编码数据格式。(contentType默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。告诉服务器从浏览器提交过来的数据格式。默认contentType server端框架封装处理好了,能通过getParameter或者注解方式正常获取。我这里显式的指定 contentType: "application/json; charset=utf-8",传递的数据对应格式不对才会出现这种问题,这是传递的时候最好传json对象。
原文链接:https://www.f2er.com/ajax/161444.html