Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2018, 14:51   #1
SoFuWa
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 64
По умолчанию Как взаимодействовать с DOM после ajax?

Что то я не пойму как сделать и в аякс не разбираюсь.
Есть select меню,
Код:
<select class="catalog_show_elements" name="vibor_razdela" onchange="qwe(this.value);">
при выборе обновляется контент в div. Select статический, вне этого дива. Нужно что бы при обновлении контента элемент radio input с одинаковым id сохранял своё состояние, для этого нужно smartFilter.click(radiobtn).
Код:
<input type="radio" value="5353456" name="arrFilter_320" id="arrFilter_320_53534562" onclick="smartFilter.click(this)">
Если просто делать smartFilter.click(radiobtn) то идёт взаимодействие с элементом DOM до обновления.
Прочитал что нужно делегировать. У меня нет никаких кликов и тд. Попробовал использовать on change
Код:
$(document).on('change', ".catalog_show_elements", function () {
idfiltra = $('input[name=arrFilter_320]:checked').attr('id');	
var radiobtn = document.getElementById(idfiltra);
smartFilter.click(radiobtn);
});
Но всё равно document.getElementById(idfiltra); выбирает старый элемент input который был до ajax обновления. Может нужно использовать ajax success: function, но url не статичный, а постоянно разный у этой страницы. В общем я запутался, может кто подскажет.
SoFuWa вне форума Ответить с цитированием
Старый 07.11.2018, 14:55   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В этом коде ничего про ajax нет.

У ajax есть callback'и срабатывающие при завершении запроса.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.11.2018, 15:03   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я бы тоже смотрел в первую очередь на
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
ajax есть callback'и срабатывающие при завершении запроса
Кстати, это
Цитата:
Сообщение от SoFuWa Посмотреть сообщение
Может нужно использовать ajax success: function
именно оно.

найдите функцию qwe()
и смотрите, как она вызывает AJAX. Найдите то место, где в результате AJAX получает ответ от сервера и
Цитата:
Сообщение от SoFuWa Посмотреть сообщение
обновляется контент в div
и вот там и допишите нужный код для
Цитата:
Сообщение от SoFuWa Посмотреть сообщение
что бы при обновлении контента элемент radio input с одинаковым id сохранял своё состояние, для этого нужно smartFilter.click(radiobtn).
кстати, я не понимаю, что такое "radio input с одинаковым id сохранял своё состояние"...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2018, 15:13   #4
SoFuWa
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я бы тоже смотрел в первую очередь на

Кстати, это
именно оно.
найдите функцию qwe()
и смотрите, как она вызывает AJAX. Найдите то место, где в результате AJAX получает ответ от сервера и

и вот там и допишите нужный код для

кстати, я не понимаю, что такое "radio input с одинаковым id сохранял своё состояние"...
да qwe я сам писал функцию =) аякс вызывается
Код:
BX.ajax.insertToNode(urlrazdela + '?bxajaxid=d234234234234', 'comp_d234234234234');
это обновляет компонент битрикса, да там всё жопа как запутано, если лезть в insertToNode там тоже ответа нет, и тд))
Вся проблема в том что всегда выбирает старый элемент, который был до обновления контента.

А не дадите пример как использовать ajax success: function, если URL php страницы всё время разный, там кликаешь на фильтр из радио инпутов и url меняется.

А тут
Код:
$.ajax({
  url: 'response.php?action=sample1',
  success: function(data) {
    $('.results').html(data);
  }
});
нужно указывать url

Цитата:
кстати, я не понимаю, что такое "radio input с одинаковым id сохранял своё состояние"...
если просто, то нужно выполнить smartFilter.click(radiobtn) на радиобутоне после обновления.

Последний раз редактировалось SoFuWa; 07.11.2018 в 15:16.
SoFuWa вне форума Ответить с цитированием
Старый 07.11.2018, 15:24   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

bitrix я не знаю.
судя по оф.документации
нужно менять это на BX.ajax.get или BX.ajax.post и там указывать функцию на callback

а ещё посмотрит статью https://dev.1c-bitrix.ru/community/w...556/blog/5766/
может быть, это поможет...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2018, 17:42   #6
SoFuWa
Пользователь
 
Регистрация: 14.08.2008
Сообщений: 64
По умолчанию

сделал в общем через URL, там можно параметры фильтру передавать, когда аякс перегружаешь. Странная эта CMS битрикс.
SoFuWa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как работает innerhtml после ajax загрузки контента lerneree JavaScript, Ajax 3 30.05.2018 12:57
как получить исходный код страницы после ajax lerneree JavaScript, Ajax 5 28.05.2018 12:36
Не меняется картинка после ajax загрузки. Mr_freeman JavaScript, Ajax 5 28.01.2013 13:01
Как получить GUI элементы и с ними взаимодействовать rangel Общие вопросы Delphi 6 29.11.2010 12:46