[英]post variable not passed to php
我試圖通過AJAX調用發送一個POST變量,似乎PHP腳本沒有收到它。 這是我的html文件
<!doctype html>
<html>
<head>
<title>Testing</title>
</head>
<body>
<h1 id="test">Testing</h1>
<input type="text" id="search" placeholder="search"/>
<div id="target">
</div>
<script type="text/javascript">
function ajax_call(){
var hr=new XMLHttpRequest();
var target=document.getElementById("target");
hr.open("POST", "phptest.php", true);
hr.setRequestHeader("Content-Type"," application/x-www-form-urlencoded");
hr.onreadystatechange=function(){
if(hr.readyState==4 && hr.status==200){
var data=(hr.responseText);
target.innerHTML="";
target.innerHTML+=data;
}
}
hr.send("test="+document.getElementById("test").innerHTML);
}
ajax_call();
</script>
<!-- <script type="text/javascript" src="Scripts/friends2.js"></script> -->
</body>
</html>
這是PHP文件: -
<?php
header("Content-Type: application/json");
//$search=$_POST['search'];
/*if(empty($_POST)){
echo "not set";
}*/
echo $_POST['test'];
?>
我刪除了JSON解析,當我取消注釋if(empty ..)行時,我看到“未設置”
好像很少有問題
在setRequestHeader上(需要2個爭論,但在示例代碼中只給出了一個)
hr.setRequestHeader( “內容類型”, “應用程序/ x WWW的形式進行了urlencoded”);
你的PHP代碼需要返回一個json格式,例如
echo'{“message”:“'。$ $ POST ['test']。'”}};
您的頁面需要從解析的json中獲取值(請根據php代碼注意'message')
target.innerHTML + = data.message;
您需要將內容類型修改為正確的格式
<!doctype html>
<html>
<head>
<title>Testing</title>
</head>
<body>
<h1 id="test">Testing</h1>
<input type="text" id="search" placeholder="search"/>
<div id="target">
</div>
<script type="text/javascript">
function ajax_call(){
var params = "test="+document.getElementById("test").innerHTML;
console.log(params);
var hr=new XMLHttpRequest();
var target=document.getElementById("target");
hr.open("POST", "phptest.php", true);
hr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
hr.onreadystatechange=function(){
if(hr.readyState==4 && hr.status==200){
var data=hr.responseText;
target.innerHTML="";
target.innerHTML+=data;
}
}
hr.send(params);
}
ajax_call();
</script>
<!-- <script type="text/javascript" src="Scripts/friends2.js"></script> -->
</body>
</html>
您可能希望刪除JSON.parse(),以便可以在PHP端看到您可能正在進行的任何調試,否則您需要更改PHP以恢復JSON字符串。
檢查瀏覽器的開發人員控制台以檢查PHP腳本的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.