Как использовать Ajax для PHP на той же странице? - PullRequest
0 голосов
/ 21 июня 2019

Здравствуйте, друзья! Я хочу использовать ajax на той же странице php.Но проблема в том, что я могу использовать 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 голосов
/ 21 июня 2019

Прежде всего, в вашем php-коде вы получаете ввод через $_GET, а в своем коде вы отправляете запрос POST, который является интуитивно понятным. Что вы можете сделать, когда определенные параметры передаются либо через строку запроса, либо в теле запроса с пост-запросом, вы можете записать желаемый вывод и вызвать die(), чтобы не отображать остальную часть, что будет мешать полученному вами ответу. Я не вижу реальной причины сделать это в том же файле, но вот пример использования строки запроса:

<?php

if(isset($_GET['day'])) {
    die('Today is ' . htmlspecialchars($_GET['day']));
}

?>

Затем в своем коде javascript убедитесь, что вы отправили действительный запрос в соответствии с вашими потребностями.

0 голосов
/ 21 июня 2019

Не очень хорошая идея использовать одну и ту же страницу для печати html и делать некоторые вещи php.Но, если вы действительно хотите это сделать, с помощью javascript вы можете отправить еще одну переменную типа ajax=1 и изменить свой php-код:

<?php 
if(isset($_POST['ajax'])) {
    echo 'today is '.$_POST['day'];
    exit;
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...