Как правильно получать данные, отправленные AJAX - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть эта библиотека XMLHttpRequest:

function easyHTTP() {
  this.http = new XMLHttpRequest();
}

// Make an HTTP POST Request
easyHTTP.prototype.post = function(url, data, callback) {
  this.http.open('POST', url, true);
  this.http.setRequestHeader('Content-type', 'application/json');

  let self = this;
  this.http.onload = function () {
    callback(null, self.http.responseText);
  }

  this.http.send(JSON.stringify(data));
}

В моем HTML у меня есть тег кнопки с id="btn", я хочу отправить некоторые данные в файл PHP (с именем "ajax.php"), когда я нажимаю на этокнопка, поэтому у меня есть:

document.addEventListener("DOMContentLoaded", function() { 
      
      const http = new easyHTTP();

      // Create Data 
      const data = {
        title: 'Custom Posts',
        body: 'This is a custom post1'
      };

      document.getElementById('btn').addEventListener('click', function(e){

        // Create Post
        http.post('ajax.php', data, function(err, response){
          if(err) {
            alert(err);
          } else {
            alert(response);
          }
        });

        e.preventDefault();
      });

      
    });

И в моем "ajax.php" у меня есть:

<?php 

if($_SERVER['REQUEST_METHOD'] == "POST") {

  echo var_dump(json_encode($_POST));

}

?>

Но все, что я получаю от return - это пустой массив, он не должен приходитьв ответ на данные которые я отправил?(Const данные с "заголовком" и "телом")?Что я делаю не так?

1 Ответ

0 голосов
/ 12 сентября 2018

Кажется, что XMLHttpRequest отправляет тело не в $ _POST, а в 'php: //input'.

Так что вместо:

json_encode($_POST)

Вы можете использовать:

file_get_contents('php://input')

Обратите внимание, что результат по-прежнему в формате JSON.

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