如何在同一页面的PHP中使用Ajax?

时间:2019-06-21 16:11:33

标签: javascript php ajax

您好,我想在同一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>

2 个答案:

答案 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代码中确保您根据需要发送了有效的请求。