原生js的ajax数据请求
注:原生的ajax请求.在发送post请求的时候,
请求的Content-Type为text/plain;charset=UTF-8,而请求参数在Request Payload中。
如果是使用jq发送post请求,参数在Form Data
这里要注意post请求的Content-Type为application/x-www-form-urlencoded,参数是在请求体中,即上面请求中的Form Data。
最后查阅文档才知道,
HTTP POST表单请求提交时,使用的Content-Type是application/x-www-form-urlencoded,而使用原生AJAX的POST请求如果不指定请求头RequestHeader,默认使用的Content-Type是text/plain;charset=UTF-8。
也就是解决这个问题就是要求设置请求头
//手机号绑定
function apply(){
var XHR=null;
if (window.XMLHttpRequest) {
// 非IE内核
XHR = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// IE内核,这里早期IE的版本写法不同,具体可以查询下
XHR = new ActiveXObject("Microsoft.XMLHTTP");
} else {
XHR = null;
}
if(XHR){
var code = document.getElementById("numcode").value
var mobile=document.getElementById("num").value
var postdata="mobile="+mobile+"&code="+code
XHR.open("POST", "/ajax/json/live/dosignup");
XHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XHR.onreadystatechange = function () {
if (XHR.readyState == 4 && XHR.status == 200) {
var mydata =JSON.parse(XHR.responseText);
console.log(mydata)
if(mydata.code){
document.getElementById("codeerr").style.display='block'
document.getElementById("msgcode").innerText=mydata.msg
}else{
$('.zao').css('display','none')
location.reload()
}
XHR = null;
}
};
XHR.send(postdata);
}
}