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)這個是讀取的未經處理資料流,這個時候就需要你自己進行轉了。