您好,我想在同一php页面上使用ajax。但是问题是我可以在不同页面上使用ajax,但不能在同一页面上使用。我看到人们用jquery完成了它,但是我不想使用jquery。谢谢-
<?php
$gg = $_POST['day'];
echo 'today is '.$gg;
?>
<html>
<head>
<script>
function clickMe(){
// Create our XMLHttpRequest object
var req = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "example.php";
var dayName = document.getElementById("dayName").innerText;
var vars = "day="+dayName;
req.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
let return_data = req.responseText;
document.getElementById("status").innerHTML = return_data;
}
}
// Send the data to PHP now... and wait for response to update the status div
req.send(vars); // Actually execute the request
</script>
</head>
<body>
<h2>Ajax Post to PHP and Get Return Data</h2>
<p id="dayName">saturday</p>
<button onclick="clickMe()">btn</button>
<br><br>
<div id="status"></div>
</body>
</html>
答案 0 :(得分:0)
使用同一页面打印html和做一些php的东西不是一个好主意。但是,如果您确实想要这样做,可以使用javascript发送另一个变量,例如ajax=1
并更改您的php代码:
<?php
if(isset($_POST['ajax'])) {
echo 'today is '.$_POST['day'];
exit;
}
?>
答案 1 :(得分:0)
首先,在您的php代码中,您是通过$_GET
获得输入的,而在您的代码中,您是发送POST请求的,这是非常直观的。您可以做的是,当某些参数通过带有查询请求的查询字符串或请求正文传递时,您可以编写所需的输出并调用die()
以不显示其余部分,这会干扰您得到的响应。我看不出在同一文件中这样做的真正原因,但是,这是一个使用查询字符串的示例:
<?php
if(isset($_GET['day'])) {
die('Today is ' . htmlspecialchars($_GET['day']));
}
?>
然后在您的JavaScript代码中确保您根据需要发送了有效的请求。