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

 

原生ajax提交php后台接收不到问题的更多相关文章

  1. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

  2. ajax参数传递与后台接收

    目录 ajax参数传递与后台接收 Servlet中读取http参数的方法 使用默认contentType,参数追加到url后传递 使用默认contentType,参数放到data中传递 使用默认con ...

  3. ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据

    摘要:最近在写网站,好不容易弄好了需求又变了,没错企业的门户网站硬要弄成后台管理系统一样,没办法作为小工的我只能默默的改.前台HTML页面需要提交数据到后台处理,又不能用form表单,于是乎研究了1天 ...

  4. 使用$http.post()提交数据后台接收不到

    传参方式是request payload,参数格式是json,而并非用的是form传参,所以在后台用接收form数据的方式接收参数就接收不到了. POST表单请求提交时,使用的Content-Type ...

  5. ajax 发送json 后台接收 遍历保存进数据库

    前台怎么拿参数的我就不管了我也不会 反正用这个ajax没错 ajax 代码   一定要写明http请求类型  { contentType:"application/x-www-form-ur ...

  6. ajax传递数组后台接收不到值的问题

    背景: JQGrid需要进行批量删除操作传给后台的是数组,结果后台接收不到值. 后台语言:java 原因: ajax传递参数时,traditional 默认为false,JQuery会深度序列化参数对 ...

  7. 关于上传文件 非ajax提交 得到后台数据问题

    <form name="configForm" id="configForm" method="post" action=" ...

  8. 关于ckeditor ajax提交到后台 问题

    ckeditor 提交时 如果有带有html时是提交不了的 解决办法就是 你在提交的时候 将ckeditor获取的只编码(encodeURI) 然后在传到后台提交的时候 在解码 就ok了 ckname ...

  9. ajax提交到后台是中文乱码

    运行程序时遇到用ajax的url中传递数据,后台用request.getParamet()时出现中文乱码 $.ajax({ type: "POST", url: g_sBasePa ...

随机推荐

  1. log4j 配置文件详解

    [1]从零开始 a). 新建Java Project>>新建package>>新建java类: b). import jar包(一个就够),这里我用的是log4j-1.2.14 ...

  2. 【转载】malloc和new

    1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对 ...

  3. 在CentOs6.x 安装Cx_oracle5.x

    Setting up anything Oracle related is a huge pain. After hunting the web for info with minimal succe ...

  4. BZOJ_3123_[Sdoi2013]森林_主席树+启发式合并

    BZOJ_3123_[Sdoi2013]森林_主席树+启发式合并 Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20 ...

  5. bzoj 4559 [JLoi2016]成绩比较 —— DP+拉格朗日插值

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4559 看了看拉格朗日插值:http://www.cnblogs.com/ECJTUACM-8 ...

  6. bzoj 1096 仓库建设 —— 斜率优化DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1096 设 f[i] 为 i 作为最后一个仓库时前 i 个工厂的答案,最后的答案当然是 f[n ...

  7. Linux启动eclipse报错找不到java环境解决方法

    在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Eclipse 3.6 在 linux mint 12 可以在终端顺利启动Eclipse,但是鼠标双击,或者用起 ...

  8. 使用 Git 命令去管理项目的版本控制(二)

    参考 上一篇  完成本篇博客,本篇为作者原创,仅供学习参考. 本篇博文在上一篇的基础上这里记录了我的一个小模拟练习.本篇作为自己的学习笔记,也意在方便其他人的学习使用,达到分享目的.下面主要是操作截图 ...

  9. 关于window.event.srcElement 和 window.event.target(触发事件的对象)

    转自:https://www.cnblogs.com/zhilingege/p/7423817.html window.event.srcElement   是指触发事件的对象 <script ...

  10. Flask_restful 插件实战笔记——基本概念与使用

       最近在Resetful接口设计上想法还是挺多的,也实现了一些需求!想着整理下Flask_restful插件的基本知识,方便日后的复习!   官方地址:https://flask-restful. ...