Как передавать данные из js в php POST запросом?

Имеется форма на сайте и веб сервис, который получает данные этой формы и возвращает по ним ответ. Js считывает поле формы, отправляет их в php следущим образом:

async function cardBalanceRequest(){
  let number = document.querySelector('.bonus_modal #block__bonus').value;
  if(number !== '' && number.match(/^([0-9]{7})$/)){

    url = '/assets/templates/card_balance.php';
    try {
      let response = await fetch(url, {
        method: 'POST',
        headers: {
          "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
        },
        body: 'number='+number //JSON.stringify()
      });
      const json = await response.json();

php получает введенную строку следующим образом:

$number = $_POST['number'];

Подскажите пожалуйста - как можно записать в body более одной переменной и после считать из в php? Пробовал передавать в виде массива, 2мя переменными подряд с различными разделителями, сработала только вот такая запись, в последствии разделенная с помощью explode()

let very_unikalno_data = number+';'+ordernumber;
/*немного кода*/
body: 'number='+very_unikalno_data

Ответы (1 шт):

Автор решения: Алексей Шиманский

Если тело отсылается через JSON.stringify(), то в PHP:

$rawJson = file_get_contents('php://input');
$postData = json_decode($rawJson, true); 

Можно отправлять через FormData

let fd = new FormData();
fd.append("var1", 'test')
fd.append("var2", "Hello World");
fetch('/servers/server.php', {method: "POST", body: fd})

Тогда на PHP прилетит как обычно через $_POST

→ Ссылка