分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

原生ajax提交php后台接收不到问题

发布时间:2023-09-06 01:48责任编辑:苏小强关键词:暂无标签
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后台接收不到问题

原文地址:https://www.cnblogs.com/lichuntian/p/8724116.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved