setRequestHeader
我们在send之前为什么要设置请求头信息, 是希望在没有与后端口头约定的前提下,把自己伪装成一个表单?Content-Type的默认值不是application/x-www-form-urlencoded吗?
xhr.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
2. html的表单里不是都已经设置过了enctype="application/x-www-form-urlencoded",为什么我们还要用js代码再重新设置一次?
正在回答 回答被采纳积分+1
同学你好,解答如下:
1、请求头设置需要看需求,比如后端规定的接到POST请求,必须是application/x-www-form-urlencoded的形式提交到后端,后端才会解析成key1=val1&key2=val2。并非是伪装成一个表单。Content-Type的默认值是application/x-www-form-urlencoded。这里设置请求头因为是知识点所以才写上的。在工作中具体的都是会跟后端进行协商,因为接口都是后台出的,他们需要什么数据类型会提前跟前端去对接,届时如果后端有需求说前端必须写明请求头,那么我们才会设置请求头。一般是不需要前端去设置请求头的。针对这个例子,删掉请求头依然是可以进行POST请求的如下:
那么我们删掉了设置请求头为什么还可以进行POST请求,这是因为后端默认这个接口传过来的值就是application/x-www-form-urlencoded这种形式的,所以同学不用纠结,后端那边已经做了处理了。
2、enctype="application/x-www-form-urlencoded"的设置是以form表单提交的设置,js中设置
xhr.setRequestHeader(
'Content-Type',
'application/x-www-form-urlencoded'
);
是针对ajax提交方式的两者无关。
同学自己试试,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星