在应用 axios 时,留神到配置选项中蕴含 params 和 data 两者,认为他们是雷同的,实则不然。
因为 params 是增加到 url 的申请字符串中的,用于 get 申请。
而 data 是增加到申请体(body)中的,用于 post 申请。
比方对于上面的 get 申请:
axios({
method: "get",
url: "http://www.tuling123.com/openapi/api?key=20ff1803ff65429b809a310653c9daac",
params: {info: "西安天气"},
})
如果咱们将 params 批改为 data,显然是不能申请胜利的,因为 get 申请中不存在 data 这个选项。
总结
1、HTTP 申请过程中,get 申请:表单参数以 name=value&name1=value1 的模式附到 url 的前面;
2、post 申请:表单参数是在申请体中,也是 name=value&name1=value1 的模式在申请体中。
POST 表单申请提交时,应用的 Content-Type 是 application/x-www-form-urlencoded,而应用原生 AJAX 的 POST 申请如果不指定申请头 RequestHeader,默认应用的 Content-Type 是 text/plain;charset=UTF-8。
在 html 中 form 的 Content-type 默认值:Content-type:application/x-www-form-urlencoded
如果应用 ajax 申请,在申请头中呈现 request payload 导致参数的形式扭转了 , 那么解决办法就是:
headers: {‘Content-Type’:’application/x-www-form-urlencoded’}
或者应用 ajax 设置:
$.ajaxSetup({contentType: ‘application/x-www-form-urlencoded’});