当前位置:Gxlcms > PHP教程 > javascript-php文件中执行print_r($_POST)时,显示Array(),为什么呢?

javascript-php文件中执行print_r($_POST)时,显示Array(),为什么呢?

时间:2021-07-01 10:21:17 帮助过:1人阅读

 function createXML(){
                var xml = "";
                var options = document.getElementById("petTypes").childNodes;
                var option = null;
                for(var i = 0;i < options.length;i++){
                    option = options[i];
                    if(option.selected){
                        xml = xml + "" + option.value + "<\/type>";
                    }
                }
                xml = xml + "<\/pets>";
                return xml;
            }
            
            function sendPetTypes(){
                createXMLHttpRequest();
                var xml = createXML();
                var url = "PostingXMLExample.php?timeStamp=" + new Date().getTime();
                
                xmlHttp.open("POST",url,true);
                xmlHttp.onreadystatechange = handleStateChange;
                xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
                xmlHttp.send(xml);
            }

php文件中执行print_r($_POST)时,显示Array(),当执行echo file_get_contents("php://input")时,显示内容,为什么呢?请大神赐教

function handleStateChange(){
                if(xmlHttp.readyState == 4){
                    if(xmlHttp.status == 200){
                        parseResults();
                    }
                }
            }
            
            function parseResults(){
                var responseDiv = document.getElementById("serverResponse");
                if(responseDiv.hasChildNodes()){
                    responseDiv.removeChild(responseDiv.childNodes[0]);
                }
                var responseText = document.createTextNode(xmlHttp.responseText);
                responseDiv.appendChild(responseText);
            }

回复内容:

 function createXML(){
                var xml = "";
                var options = document.getElementById("petTypes").childNodes;
                var option = null;
                for(var i = 0;i < options.length;i++){
                    option = options[i];
                    if(option.selected){
                        xml = xml + "" + option.value + "<\/type>";
                    }
                }
                xml = xml + "<\/pets>";
                return xml;
            }
            
            function sendPetTypes(){
                createXMLHttpRequest();
                var xml = createXML();
                var url = "PostingXMLExample.php?timeStamp=" + new Date().getTime();
                
                xmlHttp.open("POST",url,true);
                xmlHttp.onreadystatechange = handleStateChange;
                xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
                xmlHttp.send(xml);
            }

php文件中执行print_r($_POST)时,显示Array(),当执行echo file_get_contents("php://input")时,显示内容,为什么呢?请大神赐教

function handleStateChange(){
                if(xmlHttp.readyState == 4){
                    if(xmlHttp.status == 200){
                        parseResults();
                    }
                }
            }
            
            function parseResults(){
                var responseDiv = document.getElementById("serverResponse");
                if(responseDiv.hasChildNodes()){
                    responseDiv.removeChild(responseDiv.childNodes[0]);
                }
                var responseText = document.createTextNode(xmlHttp.responseText);
                responseDiv.appendChild(responseText);
            }

 xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 

看着好像是多了个; ???

因为在传递过来的时候,传递的是字符串,这个时候PHP帮你自动转成了数组,但是后面get_file_contents(php://input)这个是读取的原始数据流,这个时候就需要你自己进行转了。

人气教程排行