Получить ajax сообщение с php - PullRequest
0 голосов
/ 06 октября 2018

Я не понимаю, почему это не работает.

$.ajax({
  type: "POST",
  url: 'test.php',
  data: {name: 'Wayne', age: 27},
});

echo $_POST['name']; echo $_POST['age'];

Он выводит следующее.

Picture Header

Picture with Header

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Попробуйте это как базовый тест ...

<?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-запросу.

0 голосов
/ 08 октября 2018

Чтобы это работало и IMO, «лучший» способ сделать это - использовать два разных файла.

  1. Один файл (index.html / index.php), из которого вы делаете запрос Ajax, и
  2. один файл (например, backend.php), куда ответ отправляется обратно

Причина , по которой он не будет работать с одним файлом , заключается в том, что PHP запускается до того, как будет сделан запрос (когда отображается файл index.something).

Поскольку вы ожидаете немедленной обратной связи с запросом Ajax, вам нужна функция успеха, которая делает что-то с данными, возвращаемыми из backend.php.

Поток подобен:

  1. index.html делает запрос к backend.php и ожидает ответа
  2. ответы бэкэнда
  3. index.html получает ответ backend.php в функции успеха

Пример:

index.html (первый файл)

<!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>

backend.php (второй файл)

<?php
    $name = $_POST["name"];
    $age = $_POST["age"];
    echo "Hello, my name is " . $name . " and I am " . $age . " years old.";
?>
0 голосов
/ 06 октября 2018

Должно быть:

$.ajax({
 method: "POST",
 url: 'test.php',
 data: {name: 'Wayne', age: 27},
})

вместо

type: "POST"

, как показано здесь: http://api.jquery.com/jquery.ajax/

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