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

Posted me春天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生ajax提交php后台接收不到问题相关的知识,希望对你有一定的参考价值。

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后台接收不到问题的主要内容,如果未能解决你的问题,请参考以下文章

ajax提交参数php接收不到

$.ajax post提交的参数ASP接收不到

AJAX表单提交以及数据接收

向后台提交数据:通过form表单提交数据需刷新网页 但通过Ajax提交数据不用刷新网页可通过原生态Ajax或jqueryAjax。Ajax代码部分

原生Ajax报400错误

php传参不成功?