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 ответа
На сервер отправляется JSON-строка, а не поля формы (как это происходит при использовании заголовка Content-Type: application/x-www-form-urlencoded). В PHP-коде эту строку нужно считывать вызовом
file_get_contents('php://input')И потом раскодировать в массив.
Спасибо большое!
все получилось