Почему не работает запрос на добавление в корзину Битрикс через XMLHttpRequest?

Есть такой запрос

let idElements = 147504;
let countElements = 1;

const request = new XMLHttpRequest();
request.open('POST', '<?=SITE_TEMPLATE_PATH?>/ajax/addtobasket.php');
request.responseType = 'json';
 var data = JSON.stringify({"id": idElements, "count": countElements});

request.addEventListener('readystatechange', () => {
if (request.readyState === 4 && request.status === 200) {
console.log(request.response);
}
});
request.send(data);


Есть условный полчатель запроса
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

if (CModule::IncludeModule("sale") && CModule::IncludeModule("catalog")) {

    if (isset($_POST['id']) && isset($_POST['count'])) {
        $PRODUCT_ID = intval($_POST['id']);
        $QUANTITY = intval($_POST['count']);
        Add2BasketByProductID( $PRODUCT_ID, $QUANTITY );
    }
    else { echo "Нет параметров";  }
}
else { echo "Не подключены модули"; }

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");


Получатель ничего не получаает, POST запрос пустой. Что может быть не так?
  • Вопрос задан
  • 379 просмотров
Решения вопроса 1
@PetrPo
BX.ajax({
	url: '<?=\CUtil::jsEscape(SITE_TEMPLATE_PATH)?>/ajax/addtobasket.php',
	method: 'POST',
	data: {"id": idElements, "count": countElements},
	dataType: 'json',
	async: true,
	onsuccess: BX.delegate(function (response) {

	}, this),
	onfailure: BX.delegate(function () {

	}, this)
});


и еще юзай лучше битриксовое api, тогда и проблем таких не будет
$request = \Bitrix\Main\HttpApplication::getInstance()->getContext()->getRequest();
if($request->isPost() && isset($request['id']) && isset($request['count'])) {

}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GeorgeGeorge
@GeorgeGeorge
Студент
Попробуйте так, вместо $_POST
$rawData = file_get_contents("php://input");
$jsonData = json_decode($rawData);

И на фронте попробуйте отправлять fetch'ем
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы