ajax post как получить данные в action?

Есть такой код, который отправляет post с данными (data):

async function addProductToCart(url = "", data = {}) {
  const response = await fetch(url, {
    method: "POST",
    body: JSON.stringify(data), // [["Code","Quantity"],["BGS-300-SH","4"],["GCW-270-LMH","10"]]
    headers: {
      "Content-Type": "application/json",
    },
  });
  console.log("end...");
  return response.json();
}

В action патаюсь ловить этим: waRequest::post()

<?php
class shopCartsmanagerPluginFrontendActions extends waJsonActions
{
	
	public function incartAction()
    {
	$this->response = array(
            'valA' => waRequest::post(),
            'valB' => 'velue second',
        );
    }
 
}

Видно, что данные улетают:

Но в ответе возвращается пустой массив:

2 ответа

  • 2
    Михаил Ушенин 4 июня 2024 16:32 #

    На сервер отправляется JSON-строка, а не поля формы (как это происходит при использовании заголовка Content-Type: application/x-www-form-urlencoded). В PHP-коде эту строку нужно считывать вызовом

    file_get_contents('php://input')

    И потом раскодировать в массив.

Эта тема в архиве. Добавление комментариев к ней отключено.