PHP не получает никаких данных из XMLHttpRequest - PullRequest
0 голосов
/ 29 апреля 2020

Не получается отправить данные POST в файл PHP через XMLHttpRequest. Я прочитал много вопросов, подобных этому, но у всех была другая проблема - ни один из них, похоже, не имеет места.

Я свел эти два файла к их основам базового ядра и он все еще не получает никаких данных POST. Я делал это точно так же во многих других случаях раньше, и я не уверен, чем этот отличается.

index. php

...
<button id="login-button">Log in</button>
...

Javascript :

function login() {
  let ajax = new XMLHttpRequest();
  ajax.open('POST', 'login.php', true);
  ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
  ajax.onload = function() {
      alert(this.response);
  };
  ajax.send({user:'hello', password:'there'});
}
document.getElementById('login-button').addEventListener('click', login)

логин. php:

var_dump($_POST);

Сообщение с выводом, каждый раз, просто гласит:

array(0) {
}

The JS и PHP находятся в одной и той же папке одного и того же веб-сайта на одном сервере, и, если это имеет значение, запускаются PHP 7 Что я мог здесь делать не так?

1 Ответ

2 голосов
/ 29 апреля 2020

Используя ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');, вы в основном указываете свой запрос на ожидание данных в кодировке URL.

Позвольте сделать это очень просто, вы хотите ввести имя пользователя и пароль.

Таким образом, запрос должен выглядеть следующим образом ajax.send("username=hello&password=there")

В вашем примере кода, который вы пытались отправить Я не знаю, что за объект-нотация. go способ обмена данными между внешним и внутренним интерфейсами: JSON.

Чтобы изменить пример для работы с json, измените его следующим образом:

ajax.setRequestHeader("Content-Type", "application/json");
let data = JSON.stringify({"username": "hello", "password": "there"});
ajax.send(data);

Чтобы получить объект из допустимой строки JSON, вы можете использовать метод разбора json pe, это поможет вам:)

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