@Ex1st

Как использовать AJAX в Битрикс?

Нужно обработать данные из формы AJAX'ом. Посмотрел примеры из документаций, но там нет ни одного примера для обработки формы.

Напишите, пожалуйста, простой пример обработки данных из формы BX.ajax, либо внятный материал по этой теме.

P.S. С аяксом знаком плохо, поэтому чем проще, тем лучше

Буду очень благодарен!
  • Вопрос задан
  • 13259 просмотров
Решения вопроса 1
@Firsov36
full-stack web developer
BX.ajax это тот же Ajax, только в обертке Битрикса. Используйте его почти точно также как и обычный Ajax с некоторыми нюансами от Битрикса.

Вот на хабре пост Ajax для новичков
Документация Битрикс BX.ajax

Не совсем понятно, что имеется в виду "примеры обработки формы". Обработки полей формы на валидность? Или сбор данных, манипуляция данных формы перед отправкой? Или куда отправить запрос и что за скрипт написать в бэкэнде? Или как из бэкэнда получить данные, а потом что-то с ними сделать?

Если с Ajax знакомы плохо, то лучше начать с изучения этой технологии. Там ничего сложного.

Если очень кратко пример, то вот 2 файла. Специально использовал Битриксовские обертки для js.

простая страница сайта с формой /ajax.php
<?php

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
CJSCore::Init(array('ajax'));
?>

<div id="my-form">
    <input id="my-input"></div>
    <button id="my-button">send ajax request</button>
    <div id="my-result" style="margin:10px 0;padding:.5em;border:1px solid #ececec;"></div>
</div>

<script>
    const input = BX('my-input')
    const button = BX('my-button')
    const result = BX('my-result')
    
    BX.bind(button, 'click', () => {
      BX.ajax({
        url: '/ajaxhandler.php',
        data: {
          text: input.value,
        },
        method: 'POST',
        dataType: 'json',
        timeout: 10,
        onsuccess: function( res ) {
          console.log('res: ', res)
          result.innerText = res.text;
        },
        onfailure: e => {
          console.error( e )
        }
      })
    })
</script>

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");


и скрипт, куда обращается ajax (/ajaxhandler.php):
<?php

$result = [
    'isSuccess' => true,
    'text' => "user was typing: {$_POST['text']}",
];

header("Content-type: application/json; charset=utf-8");
echo json_encode($result);


В поле вводим текст. Нажимаем на кнопку и ниже в поле появляется текст 'user was typing' + текст что ввели в поле.

Изучайте. На вопрос я ответил, у вас скорее всего появилось куча дополнительных вопросов. Но все ответы в изучении js, php и ajax в частности..
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Trionik
{status: "success", data: {…}, errors: Array(0)}
data:
fid: 285
__proto__: Object
errors: []
status: "success"
__proto__: Object


Вот такая хрень у битрикса вылазить и в принципе не получается получить данные из объекта
вот это не работает

data.fid;
data['fid'];


пишет undefined
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы