Отправка массива на PHP с использованием XMLHttpRequest (pure JS) - PullRequest
1 голос
/ 29 февраля 2020

Я пытаюсь отправить массив из JS в PHP, используя AJAX.

. Кажется, что происходит, что запрос проходит и успешно выполнен, но данные отсутствуют получил на сервере (мой тест. php скрипт нуждается в данных из этого массива). Вот что у меня есть ...

Javascript

myButton.onclick = function() {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "test.php", true);
    xhr.onreadystatechange = function () {
        if (xhr.readyState==4 && xhr.status==200) {
            console.log("Done. ", xhr.responseText);
        }
    }

    //xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send('myArray='+JSON.stringify(myArray));
};

test. php

<?php
//$myArray = json_decode($_POST['myArray']); //Undefined index
print_r($_POST);

Примечание, myArray не показан в приведенном выше коде, но он является допустимым массивом.

Я искал вокруг SO (что привело меня к добавлению setRequestHeader), а также более широкий inte rnet. Тем не менее, это не имеет значения, и я, кажется, ходить по кругу. Когда я печатаю $ _POST, это всегда пустой массив.

Я уверен, что я чего-то упускаю / неправильно понимаю.

Редактировать

По запросу ...

var myArray = ["John", "Jill", "James"];

Я также пытался сделать это с массивом логических значений, а также с ассоциативным массивом / объектом.

Редактировать 2

По запросу добавляем снимок экрана с консоли разработчика ...

enter image description here

1 Ответ

0 голосов
/ 29 февраля 2020

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

let data = new FormData();
let values = [1, 2, 3];
data.append('myArr', JSON.stringify(values));
// send data to server

и в php использовать json_decode:

$Values = json_decode($_POST['myArr']);

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

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