Как с помощью AJAX выполнить POST запрос в Битрикс 1С для изменения цены товара на странице карточки товара?

Каким образом можно реализовать изменение цены товара только при определенных условиях, а не для всех товаров в каталоге, используя код, приведенный в init.php? Текущий код меняет цену для всех товаров, но требуется добавить условие, которое будет применять изменения только к определенным товарам. Как можно модифицировать код, чтобы добиться нужного функционала?
  • 23 мая 2024 г. 7:31
Ответы на вопрос 1
Для выполнения POST запроса в Битрикс 1С с помощью AJAX для изменения цены товара на странице карточки товара, можно использовать следующий пример кода:

1. В файле init.php добавьте обработчик AJAX запроса:

```php
AddEventHandler("main", "OnEpilog", "OnPageLoaded"); 
function OnPageLoaded() {
    if (isset($_POST['action']) && $_POST['action'] == 'changePrice') {
        $productId = $_POST['productId'];
        $newPrice = $_POST['newPrice'];

        // Ваш код для изменения цены товара по $productId на $newPrice
    }
}
```

2. На странице карточки товара добавьте JavaScript код для отправки AJAX запроса:

```javascript
var productId = 123; // ID товара
var newPrice = 100; // Новая цена

$.ajax({
    type: 'POST',
    url: '/bitrix/init.php',
    data: {
        action: 'changePrice',
        productId: productId,
        newPrice: newPrice
    },
    success: function(response) {
        // Обработка успешного ответа
    },
    error: function() {
        // Обработка ошибки
    }
});
```

Для изменения цены только определенных товаров можно добавить условие в обработчик AJAX запроса в файле init.php:

```php
AddEventHandler("main", "OnEpilog", "OnPageLoaded"); 
function OnPageLoaded() {
    if (isset($_POST['action']) && $_POST['action'] == 'changePrice') {
        $productId = $_POST['productId'];
        $newPrice = $_POST['newPrice'];

        // Добавьте условие для изменения цены только определенных товаров
        if ($productId == 123) { 
            // Ваш код для изменения цены товара по $productId на $newPrice
        }
    }
}
```

Таким образом, после добавления условия в обработчик AJAX запроса, изменения цены будут применяться только к товарам с ID равным 123.getMockInstance().
Похожие вопросы