我不明白为什么这不起作用。
$.ajax({
type: "POST",
url: 'test.php',
data: {name: 'Wayne', age: 27},
});
echo $_POST['name']; echo $_POST['age'];
它输出以下内容。
为了工作和IMO,“最好”的方法是使用两个不同的文件。
它不能用于一个文件的原因是因为PHP在发出请求之前运行(当呈现index.something文件时)。
由于您期望得到Ajax请求的即时反馈,因此您需要有一个成功函数,它可以对backend.php返回的数据执行某些操作。
流程如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Hello World</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="main.js"></script>
<script>
function $ajaxReq() {
$.ajax({
method: "POST",
url: "backend.php",
data: {
name: "John",
age: 23
},
success: function(data) {
alert(data)
}
})
}
</script>
</head>
<body>
<button onclick="$ajaxReq()">Click me</button>
</body>
</html>
<?php
$name = $_POST["name"];
$age = $_POST["age"];
echo "Hello, my name is " . $name . " and I am " . $age . " years old.";
?>
它应该是:
$.ajax({
method: "POST",
url: 'test.php',
data: {name: 'Wayne', age: 27},
})
代替
type: "POST"
试试这个作为基本测试......
<?php
if($_POST){
echo $_POST['name']."<br>";
if($_POST['age']<21){
echo "Too young to log in!";
}else{
echo $_POST['age']." years old is ok!";
}
}else{
echo "No post values yet.";
?>
<div id="result"></div>
<script>
$.ajax({
method: "POST",
url: 'test.php',
data: {name: 'Wayne', age: 19},
success: function(response){
$("#result").html("I'm the Ajax result!<br><br>"+response);
}
});
</script>
<?php
}
?>
您应该注意到PHP在这里运行了两次...在加载时然后在Ajax请求上运行。