Подскажите как сделать корзину на сессиях для битрикс 1с. Я хочу, чтобы при нажатие на кнопку у меня добавлялся товар в корзину без перегрузки страницы. Я сделал следующим образом: C помощью ajax-передаю post запросом передаю id элемента инфоблока:
function Buy(element_id) {
const id = document.getElementById(element_id).value;
var formData = new FormData();
formData.append('id', id);
var HttpRequest = new XMLHttpRequest();
HttpRequest.onload = function(e) {
if (this.status == 200) {}
};
HttpRequest.open("POST", '/personal/cart/', true);
HttpRequest.send(formData);
}
/personal/cart/
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'); //Обязательная строка инициирующая движок Битрикса, но не подключающая шаблон
header('Content-Type: application/json');
session_start();
$id = $_POST['id'];
if (!empty($_SESSION['BX_CART'])) {
$arChart = $_SESSION['BX_CART'];
} else {
$arChart = array();
}
$arChart[$id]= [
"id" => $id,
];
$_SESSION["BX_CART"]=$arChart;
foreach($_SESSION['BX_CART'] as $session){
$arr[]=$session["id"];
}
\Bitrix\Main\Loader::includeModule('iblock');
$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM");
$arFilter = Array("IBLOCK_ID"=>IntVal(8),"ID"=> $arr, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
while($ob = $res->GetNextElement())
{
$arField = $ob->GetFields();
$arFields[]=$arField;
}
echo json_encode($arFields);
В этой части получаю массив из выбранных элементов из инфоблока.
//ЗДЕСЬ ПОЛУЧАЮ JSON
$.ajax({
url: '/personal/cart/',
method: 'get',
//dataType: 'html',
success: function (data) {
const postData= data;
function BlogPost(postData) {
return `<div class="post">
<h1>${postData.NAME}</h1>
<h3>By ${postData.PRICE}</h3>
</div>`;
}
function BlogPostList(posts) {
return `<div class="blog-post-list">
${posts.map(BlogPost).join('')}
</div>
`
}
function update() {
document.querySelector('.cont').innerHTML = BlogPostList(postData);
}
update();
}
});
Мне нужно,чтобы при нажатие на кнопку товар добавлялся сразу,но он добавляется только после перезагрузки.