起因:看了阮一峰老师的关于上传文件的文章,进行测试,在使用xhr对象的send方法时遇到问题。
遇到的问题是使用send方法传送过去的数据,在node后台无法接收,经过很多次测试,怀疑是不是send与node不兼容导致。
所以使用了jq的ajax方法进行测试,
$(“#sub”).click(function(){
$.ajax({
url:”/upload”,
data:”foo=123″,
type:”POST”})
})
发现post过去的数据可以使用req.body接收。
因为jq的ajax方法的原生便是xhr对象,所以基本排除send方法与node不兼容的说法。
之后查阅资料发现,原来使用send方法时,如果是get请求则直接写open和send即可,
但是假设是post方法传数据给后台,则需要加
xhr.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded;charset=UTF-8″);
否则post过去的数据无法被正常接收。
补充:如果使用get方法,基本用法应该如下:
var xhr=newXMLHttpRequest();
xhr.open(“GET”,”upload?username=qiangzi&password=123″;
xhr.send(null);