我试图通过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 ..)行时,我看到“未设置”
答案 0 :(得分:2)
似乎没有什么问题
在setRequestHeader上(需要2个争论,但在示例代码中只给出了一个)
hr.setRequestHeader( “内容类型”, “应用程序/ x WWW的形式进行了urlencoded”);
您的PHP代码需要返回json格式,例如
echo'{“message”:“'。$ _ POST ['test']。'”}';
您的页面需要从解析的json中获取值(请注意php代码中的'message')
target.innerHTML + = data.message;
答案 1 :(得分:1)
您需要将内容类型修改为正确的格式
<!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脚本的输出。