var xmlHttp; if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp=new XMLHttpRequest(); } function getAppCaptcha(cdata){ if (isCaptcha) {return} isCaptcha = true; xmlHttp.open("POST",aaa.php‘); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlHttp.setRequestHeader("X-Requested-With","XMLHttpRequest"); xmlHttp.send(disposeData(cdata)); xmlHttp.onreadystatechange = function(data) { if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) { var sdata = JSON.parse(data.currentTarget.response); if (sdata.error_code == 0) { //验证成功 //干点什么 isClick = false; }else if(sdata.error_code == 1048){//超过四次 isClick = true; document.querySelector(‘.pop_click_box‘).style.display = ‘block‘ }else{ //验证失败 tipfun(sdata.error_msg); } } else { isClick = false; } } }
上面代码由于PHP做了ajax校验需要
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("X-Requested-With","XMLHttpRequest");
---------------------------------------------------------------------------------------
PHP判断ajax请求的原理:
在发送ajax请求的时候,我们可以通过XMLHttpRequest这个对象,创建自定义的header头信息, 在jquery框架中,对于通过它的$.ajax, $.get, or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER[‘HTTP_X_REQUESTED_WITH‘]判断。
注意:
- 一般情况下$_SERVER[‘HTTP_X_REQUESTED_WITH‘]默认是XMLHttpRequest
- $_SERVER[‘HTTP_X_REQUESTED_WITH‘]也可以自定义创建的,使用XMLHttpRequest.setRequestHeader(name,value);
-------------------------------------------------------------------
提交的数据需要disposeData方法来处理成对应字符串才可以
//传参封装 function disposeData(data){ var strData = ‘‘,num = 0; for(var key in data){ if(num == 0){ strData = key + ‘=‘ + data[key]; }else{ strData += ‘&‘ + key + ‘=‘ + data[key]; } num++; } return strData; }
类似这样的字符串给到后台name=地方&bankCard=2321323123123&phone=13800138000