我正在尝试使用AJAX传输数据。我有两个文件,一个有PHP,HTML,另一个有JS代码:
test.php的:
<?php
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(isset($_POST["txtField"])){
echo "OK";
}else{
echo "NOT OK";
}
}
?>
<html>
<head>
<title>Test Ground</title>
<script type="application/javascript" src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
<script type="application/javascript" src="test.js"></script>
</head>
<body>
<input type="text" id="txtField" />
<input type="button" id="sendInput" value="Send" />
</body>
</html>
test.js
$(window).on("load", function(){
$("#sendInput").on("click", sendInput);
});
function sendInput(){
$.ajax({
url: "test.php",
method: "POST",
data: {txtField: $("#txtField").val()}
}).done(function(data){
console.log(data);
});
}
一切正常,直到我收到PHP对JS的回复。在console.log中显示的数据还包括HTML代码以及PHP响应&#34; OK&#34;。但我只想要PHP响应,没有别的。我知道我可以获取整个数据并删除HTML标签下的所有内容或为PHP创建一个单独的文件,但无论如何都会直接返回PHP的响应而不创建单独的PHP文件。
答案 0 :(得分:1)
像这样修改你的PHP文件:
<?php
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(isset($_POST["txtField"])){
echo "OK";
}else{
echo "NOT OK";
}
}
// This is what i have added.
if(isset($_GET["fromJS"]))
die();
// Till here, so if this GET param is set noting will come up further this.
?>
<html>
<head>
<title>Test Ground</title>
<script type="application/javascript" src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
<script type="application/javascript" src="test.js"></script>
</head>
<body>
<input type="text" id="txtField" />
<input type="button" id="sendInput" value="Send" />
</body>
</html>
将您的AJAX调用发送到test.php?fromJS=true
$(window).on("load", function(){
$("#sendInput").on("click", sendInput);
});
function sendInput(){
$.ajax({
url: "test.php?fromJS=true",
method: "POST",
data: {txtField: $("#txtField").val()}
}).done(function(data){
console.log(data);
});
}
答案 1 :(得分:1)
您可以使用exit()
功能获得正确的回报:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["txtField"])) {
echo "OK";
exit();
} else {
echo "NOT OK";
}
}
发送Ajax调用时,服务器会返回文件中的所有打印值。所以HTML也被打印出来了。
像那样,你只打印'OK',因为exit()
会停止执行文件,只打印OK。
注意,当您使用AJAX时,使用单独的PHP文件和HTML文件更合适。
答案 2 :(得分:0)
你需要2个php文件一个用于ajax,一个用于发送ajax的页面,如果你想坚持一个php页面试试这个代码:
<?php
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(isset($_POST["txtField"])){
echo "OK";
}else{
echo "NOT OK";
}
} else {
?>
<html>
<head>
<title>Test Ground</title>
<script type="application/javascript" src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
<script type="application/javascript" src="test.js"></script>
</head>
<body>
<input type="text" id="txtField" />
<input type="button" id="sendInput" value="Send" />
</body>
</html>
<?php }?>