Рейтинг: 2  
Новая
Предложил Пользователь 93386 20.11.2020 14:18:26

BX.ajax.runComponentAction - добавить параметр start

Реализовал загрузку файлов на форме через AJAX-действия, хотелось бы подписаться на прогресс upload'а, но в методе BX.ajax.runComponentAction такой возможности нет. Зато в BX.ajax (который по сути вызывается для Ajax-действия) есть параметр  start - можно было бы получить var xhr = BX.ajax.runComponentAction, подписаться на нужные события и после запустить запрос xhr.send. Но параметр  start для BX.ajax.runComponentAction отсутствует. Предлагаю добавить такой параметр.
Рейтинг: 0  
Новая
Предложил Пользователь 322502 28.08.2018 17:04:10

Возможность добавить товар в таблицу корзины на странице корзины через AJAX

Появилась задача с необходимостью вывода рекомендованных товаров на странице корзины и добавлением этих товаров напрямую в таблицу корзины без перезагрузки всей страницы.

В новой корзине есть только следующие функции (action`ы), поддерживающие AJAX:
- изменить количество товара;
- удалить товар из корзины;
- восстановить удаленный товар;
- отложить;
- изменить выбранное ТП;
- объединить одинаковые товары.

Предлагаю добавить к этим action`ам возможность добавления товара в корзину.
Сейчас приходится это делать костылем через action восстановления удаленного товара.
Рейтинг: 5.6706  
Новая
Предложил Пользователь 60490 18.06.2018 16:42:01

Сделать наконец-таки обновление содержимого без обновления страницы задачи! (список подзадач, время)

Подскажите, пожалуйста, планируют ли сделать обновление содержимого без обновления страницы задачи?
1) когда добавляешь подзадачу: https://yadi.sk/i/eHwKgZUu3Y4zTE
2) когда добавляется время (после нажатия "Пауза")
Рейтинг: 1.0483  
Новая
Предложил Пользователь 58969 22.01.2016 15:37:08

Ajax запросы в дефолтных шаблонах

Здравствуйте.

Рассмотрим пример стандартного шаблона, компонент catalog.smart.filter.
Если выбрать параметр в фильтре, то ajax запрос отправляется на туже самую страницу http://joxi.ru/brR63XKsQBN6Jr

При это происходит загрузка страницы полностью (до компонента), затем весь вывод сбрасывается и отдаётся на ajax запрос необходимые данные.

Минусы такого подхода:
- увеличивается время на запроса, после нажатия фильтра приходится ждать от пол секунды и выше;
- лишняя нагрузка на сервер, так как отрабатывают все компоненты, которые лежат выше фильтра;
- и др.

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

Это касается компонентов в магазине, и др. которые используют ajax запросы на текущую страницу.
Рейтинг: 1.8443  
На голосовании
Предложил Пользователь 224396 17.08.2015 17:10:55

Режим AJAX для компонентов с проверкой id компонента

Если на странице 2 аяксовых компонента, то отрабатывает первый из них. (Проверялось на корзине и веб формах).
В компоненте корзины

if ($_REQUEST["AJAX_CALL"] == "Y" || $_REQUEST["is_ajax_post"] == "Y") {
 die();
}
Все что после - идёт лесом.
По идее данные должны соотносится с компонентом, которому они предназначаются.

З.Ы. Я не говрю уже о

preg_match_all('/action=(["\']{1})(.*?)\1/i', $arData[$key], $arAction);
$url = $arAction[2][0];

if ($url === '' || $this->__isAjaxURL($url))
{
 $arData[$key] = CAjax::GetForm($arData[$key+1], 'comp_'.$this->componentID, $this->componentID, true, $this->bShadow);
}
else
{
 $new_url = str_replace(CAjax::GetSessionParam($this->componentID), '', $url);
 $arData[$key] = str_replace($url, $new_url, $arData[$key]);
}

$bDataChanged = true; 
в CComponentAjax.
В общем возмущению нет предела.
Спрашивается, для чего нужны компоненты, если ничего толком не работает?
З.Ы.Ы Битрикс такой битрикс
Рейтинг: 0.435  
На голосовании
Предложил Пользователь 215992 17.07.2015 16:50:12

Многотысячный справочник

Добавить для свойства инфоблока в виде справочника вывод выпадающим список при наборе с ajax-подгрузкой вариантов, чтобы не строился выпадающий список СО ВСЕМИ ВОЗМОЖНЫМИ вариантами значений - это отнимает уйму времени при переходе на страницу редактирования элемента.
Рейтинг: 0.5763  
На голосовании
Предложил Пользователь 82939 15.10.2014 11:57:02

Новая концепция ajax

Постараюсь описать концепцию кратко, четко и по порядку.

1)Там где есть возможность ajax в файле с шаблоном должен лежать файл ajax.php в котором можно просто подключить компонент, первоначально хотя бы так и перед ним prolog_before естественно
2)Так же в шаблоне должен быть файл ajax.js - в котором будет указываться исполняемый код js при запросе - какие параметры передавать и так далее - параметры разные необходимо передавать в зависимости от компонента
3)Помимо стандартного параметра ajax который подвешивается в Битриксе еще необходимо будет передавать путь к файлу обработчику js(например параметр ajax_path_to_js).

Суть работы - когда осуществляем вызов ajax события, по параметру ajax_path_to_js проверяем что файл существует если нет возвращаем ошибку.
Если он существует запускаем этот файл на исполнение - далее уже выполняется сам ajax

Файлы для компонентов можно сформировать вручную либо автоматически.
Автоматически суть следующая - при включении в параметрах использования ajax вызывается обработчик который создается файл ajax.js если его не существует - стандартного наполнения в котором содержится только вызов через ajax файла и возврат результата в виде html который вставляется в область с id ajax_area_newslist_default - точки опускаем, формируем из название шаблона и компонента
далее можно так же автоматически в файл template.php оборачивать код в данный div(либо не в шаблоне а в верхнем уровне оборачивать компонент в div), если он не был найден, либо в настройках компонента(в параметрах) добавить параметр в которым указывать id области для использования ajax и автоматом подставлять первоначально данное значение.
Далее создаем файл ajax.php который изначально так же стандартного содержания включающий в себя - prolog_before и вызов самого компонента
Как получить вызов самого компонента - просканировать страницу на наличие названия компонента и его шаблона, а далее все по стандарту копируем - вставляем.

Комплексный компонент стандартно можно точно так же вызывать - все равно это удет быстрее чем перезагружать всю страницу, да и композит будет подгружать данные быстрее и можно по очереди, что первое подгрузилось то первое и заменилось.

P.S. - из-за пояснений кратко не вышло
Рейтинг: 0.2825  
Новая
Предложил Пользователь 56375 25.02.2014 15:35:41

Добавить событие для веб-форм в режиме ajax

В режиме ajax добавить метод javaScript наподобие "Прокрутить к началу компонента":

BX.scrollToNode = function (node) {};
сделать что-то вроде BX.onFinish(node){};

Сейчас приходится включать режим "AJAX_JUMP" => "Y", и переопределять BX.scrollToNode, чтобы добавить обработку данных.
Рейтинг: 1.664  
На голосовании
Предложил Пользователь 16182 23.12.2013 18:42:26

Добавить поддержку AJAX_MODE в компонент system.auth.form

Добавить поддержку AJAX_MODE в компонент system.auth.form (форма авторизации для встраивания в шаблоне сайта).
Рейтинг: 2.2723  
Новая
Предложил Пользователь 16182 01.12.2013 02:28:46

Добавить параметры AJAX_MODE во все компоненты

Поскольку механизм AJAX от Битрикс универсален подходит для любого компонента, предлагаю включить группу параметров AJAX_MODE во все стандартные компоненты, для удобства интегратора.

Для компонентов корзин он особенно нужен:

- bitrix:sale.basket.basket.line
- bitrix:sale.basket.basket
- bitrix:catalog.element
сейчас приходится его постоянно дописывать вручную.
Рейтинг: 0.4452  
На голосовании
Предложил Пользователь 16182 30.11.2013 03:14:38

Обновление html-кода соседних компонентов при аякс-запросе

Раз уж Битриксовский Аякс для компонентов выполняет всю страницу, то было бы хорошо иметь возможность указытьвать несколько компонентов, содержимое которых должно обновиться при выполнении аякс-запроса. А не только одного, текущего.

Например, на странице размещен компонент bitrix:catalog.section, работающий в режиме аякс. Когда у товара нажимаем "добавить в корзину" - то перегенерируется вся страница, и в контейнер данного компонента вставляется результат, все лишнее обрезается. Так раз уж мы выполнили всю страницу, то у нас где-то есть сгенерированный html-код остальных компонентов, осталось только самую малость - не выкидывать (обрезать) его, а вставить результат в контейнеры нужных компоненты (которые указать в параметрах компонента), и обновить таким образом компонент малой корзины.

Аж стыдно, что имея такую мощную аякс-библиотеку, сам Битиркс в своем типовом решении магазина для обновления содержимого малой корзины пользуется библиотекой Jquery (а не своим штатным аяксом).
Рейтинг: 4.7856  
Ответил Жуков Евгений 14.02.2014 15:36:28
В типовом решении с 14-й версии мы перешли на собственную библиотеку. А требуемый Вами функционал в стадии реализации на основе js-событий.
Рейтинг: 2.6823  
На голосовании
Предложил Пользователь 16182 14.11.2013 03:15:01

Продолжить развивать технологию Битрикс Ajax

А то начали очень хорошо, но потом похоже полностью забросили, как буд-то и небыло.

Например, в последнем типовом решении магазина не используется штатный аякс а все на каких-то чудо-костылях с $APPLICATION->RestartBufer() в result_modifier компоннетов для корзины и умного фильтра.

Хорошая же была технология, чуточку доработать под современные нужны, и то что надо.
Рейтинг: 30.7696  
На голосовании
Предложил Пользователь 8839 09.10.2013 11:25:21

Добавить component_prolog.php в компоненты

Часто возникает потребность обновить область страницы, где выводится один компонент, из шаблона другого компонента (например добавление в корзину через AJAX в каталоге требует обновления области малой корзины, добавление комментария к новости - обновления списка новостей в боковой колонке и т.п.). Отсюда и возникла идея. Если уж был в свое время добавлен component_epilog.php, то почему бы не добавить component_prolog.php, который запускался бы всегда независимо от кэша.
При его наличии мы могли бы организовывать ajax-взаимодействия компонентов на странице через шаблоны данных компонентов.
Например, в шаблоне малой корзины пишем javascript-функцию, которая вызывает текущую страницу с определенным параметром; в component_prolog.php проверяем наличие в запросе данного параметра и, если установлен, делаем $APPLICATION->RestartBuffer(); в component_epilog.php, соответственно, при установленном параметре делаем exit;
В шаблонах компонентов, где происходит ajax-добавление в корзину, проверяем наличие упомянутой выше javascript-функции и дергаем ее, если есть.
Дешево и сердито.