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

 

最新文章

  1. hdu 4022 STL
  2. lightning mdb 源代码分析(4)—MVCC/COW
  3. Sqli-labs less 33
  4. Ajax.BeginForm返回方法OnSuccess
  5. 微信小程序学习 一
  6. Scala-Unit6-final/type关键字、样例类&样例对象
  7. CentOS7.6 安装Docker
  8. web中的乱码处理
  9. 潭州课堂25班:Ph201805201 第十一课 继承,多继承和魔术方法,属性和方法 (课堂笔记)
  10. Linux内核模块编程之Helloworld(初级)
  11. Python之入门篇1
  12. 适用于Win8的Office2003_SP3精简版集成各类补丁+兼容包
  13. 第十七篇:IO复用之select实现
  14. java反射例子
  15. Java大数——快速矩阵幂
  16. Enterprise Library:Unity的几个注意事项
  17. editplus5注册码
  18. day3-exercise
  19. STM32的GUI库使用
  20. PyNest——part 3: connecting networks with synapses

热门文章

  1. mongodb存储二进制数据的二种方式——binary bson或gridfs
  2. 提高scroll性能
  3. 【转载】rageagainstthecage.c源码以及注释
  4. python+Django实现Nagios自动化添加监控项目
  5. liunx环境下安装tomcat
  6. 初学Java(一)
  7. Autoware docker 环境安装
  8. NMS 原理 了解
  9. Mogodb 存储DateTime问题
  10. Qt教程