Ajax отправляет сам файл PHP, но, похоже, функция PHP не выполняется - PullRequest
0 голосов
/ 01 декабря 2018

Ajax отправляет сам файл PHP, но, похоже, функция PHP не выполняется.

<?php

function request(){
    echo "<h1>requested</h1>";
}

?>
<html id="html">
<button id="btn_click" onclick="request1()">click</button>


</html>
<script  type="text/javascript">
    function request1(){
        document.write("<h1>been clicked</h1>");
        var xmlhttp = new XMLHttpRequest();

        xmlhttp.open("GET", "/index.php", true);
        xmlhttp.send();
    }
</script>

JavaScript успешно выполнен, но, похоже, код PHP не выполнен.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

$_SERVER['HTTP_X_REQUESTED_WITH'] помогает нам обнаружить запрос AJAX

    <?php
//Check Here Ajax Request
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
    function request(){
       echo "<h1>requested</h1>";
    }
    request();
    die;
}
?>
<html id="html">
    <body>
        <button id="btn_click" onclick="request1()">click</button>
        <div class="response" id="result" ></div>

        <script  type="text/javascript">
            function request1(){
                var xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == XMLHttpRequest.DONE) {   // XMLHttpRequest.DONE == 4
                       if (xmlhttp.status == 200) {
                           document.getElementById("result").innerHTML = xmlhttp.responseText;
                       }
                    }
                };
                xmlhttp.open("GET", "./index.php", true);
                xmlhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); // <-- ADD this
                xmlhttp.send();
            }
        </script>
    </body>
</html>
0 голосов
/ 01 декабря 2018

Чтобы добавить к тому, что сказал gibberish, есть еще кое-что.Вы также должны иметь в виду, что вы, кажется, вообще не выполняете функцию.

Функция PHP ничего не делает, если не вызывается.

function request() {
  echo "<h1>Hello</h1>"
}

Функция, указанная выше, не будет затронута, если вы ее не вызовите:

request() // <h1>Hello</h1>

ТакжеAJAX лучше всего использовать, когда запросы просты.Вы отправляете запрос /path/to/file.php, тогда эти запросы должны возвращать простой текстовый ответ или объект JSON, или полностью визуализированную статическую страницу, если вы используете модальный или некоторый статический элемент на своем сайте.

/ path /to / file.php

<?php

if( $_GET['clicked'] ) {

  // do whatever 

  echo json_encode([
    'user_id' => 1,
    'total_clicks' => $_GET['clicked'],
    'random_number' => rand(100, 999)
  ]);

}

JS может легко обработать ответ:

function request(id) {
  return fetch(`/path/to/file.php?clicked=${id}`)
          .then(res => {
            console.log(res);
            body.innerHTML += res.user_id;
            body.innerHTML += res.total_clicks;
          })
          .catch(err => console.error(err));
}

Это будет самый простой способ заставить ваш сервер вернуть информацию из БД и сделать вашу страницуконтент настолько интерактивный, насколько вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...