Как передать html массив форм в PHP с помощью fetch ()? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть форма, из которой я получаю данные с new FormData(form). У меня проблемы с тем, чтобы мои HTML массивы правильно перешли на PHP. Я использую vanilla JS и, например, в jQuery, использование serializeArray() сериализовало бы мои HTML в то, что PHP понимает. Но теперь с JSON .stringify, кажется, полностью игнорируются HTML массивы, и я получаю это:

{"postData[0][val]":"1"} передано PHP, где я ожидаю

{"postData": ["0": ["val": "1"]]}

Мой HTML:

<select name="postData[0][val]">
    <option value="1">nothing</option>
    <option value="2">boy</option>
    <option value="3">girl</option>
</select>

<input name="postData[0][val2]" type='number'>

Мой Javascript:

const formData = new FormData(form).entries();
let postData = {};

for (var pair of formData) {
    postData[pair[0]] = pair[1];
}

fetch(`${base}events/play/${event_id}`, {method: 'post', body: JSON.stringify(postData)})

Я есть правильное чтение ввода в PHP.

1 Ответ

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

Я ошибочно полагал, что мне нужно JSON.stringify() получить все запросы POST в PHP; Это был не тот случай. Начиная с документы :

Оба запроса и ответы могут содержать данные тела. Тело является экземпляром любого из следующих типов: ArrayBuffer, ArrayBufferView, Blob / File, string, URLSearchParams, FormData

Я смог уменьшить его до этих две строки:

const postData = new FormData(form);
fetch(`${base}events/play/${event_id}`, {method: 'post', body: postData})

Теперь он отправляется как $ _POST, а не file://input. Не самый удачный момент, но я нашел этот Q & A полезным для тех, кому нужна помощь с чем-то похожим.

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