ajax发送知识补全
ajax请求头
ajax请求中form data与request payload与querystring区别
HTTP请求过程中,get请求:表单参数以name=value&name1=value1的形式附到url的后面;
post请求:表单参数是在请求体中,也是name=value&name1=value1的形式在请求体中。!!!
(很重要,要理解这个)
POST表单请求提交时,使用的Content-Type是application/x-www-form-urlencoded,而使用原生AJAX的POST请求如果不指定请求头RequestHeader,默认使用的Content-Type是text/plain;charset=UTF-8。
HTTP请求中的form data,request payload,query string parameters以及在node服务器中如何接收这些参数
今天,在工作(倒腾微信小程序)的时候,发现发送post请求到node后台服务器接收不到前端传来的参数。其实也不是完全不能,期初用jquery中的ajax进行时候是没有任何问题的(后台可以接受参数)。
看见了吧 每个图的倒数第二行 Form Data和 Request Payload这两种不同的传递方式造成后台服务器取不到参数。这样就需要在后台服务器对不同的方式,进行不同的接收参数方法:以node+express+post请求为例子(默认参数传递的是json对象)
方式 | 处理 |
Form Data | req.body |
Request Payload | var str="";req.on("data",function(chunk){str+=chunk}) |
Request Payload方式是以“流“”的方式出入到后台,需要监听data事件来获取完整的数据。
querystring 通过req.query就可以
transformRequest: [ function (data) { let ret = ''; for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret } ]