Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.06.2018, 15:56
Интересующийся
Отправить личное сообщение для wolfio Посмотреть профиль Найти все сообщения от wolfio
 
Регистрация: 10.02.2018
Сообщений: 22

Нуждаюсь в помощи
Здравствуйте.
В целях саморазвития колхозю сайт, попутно изучая все что это требует, и периодически психуя на вселенную.
с JavaScript у меня совсем печально. Пытаюсь сделать спойлер, который отправит запрос серверу, получит от него данные, и выведет в виде внутренней таблички.
И в общем-то мой код не работает. я не понимаю почему. Может кто помочь?

собственно, страничка(кусочек), с кнопкой "отклики(спойлер)":
<div class="b_ad" id="30">
            <div class="b_ad_right_side">
                <p><a href="https://test.test/$$$ACC_ID-$$$NICKNAME/">$$$NICKNAME</a></p>
            </div>
            <div class="b_ad_left_side">
                <div class="b_ad_text">
                    <p>$$$TEXT_MESS </p>
                </div>
                <div class="b_ad_time_cr" style="float: right">
                    <p>$$$TIME_AGO</p>
                </div>
                <button class="b-button_right_">Откликнуться</button>
                
                <a href="#" class="b_button_responds">
                    <span>Отклики(спойлер)</span>
                </a>
                <div class="spoiler-block"></div>
            </div>
        </div>


и мой код-колхоз на нее и вывод данных:
$(document).ready(function () {
    $(".b_button_responds").click(function () {
        alert("Respind_id!:"+ $(this).closest("div.b_ad").prop("id"));
        $.post("RespondsList"
            , {AdId: $(this).closest("div.b_ad").prop("id")}
            // , function (data) {alert("::responds_list::\t"+$(this).closest("div.b_ad").prop("id"))}
            , function (data) {
                $(this)
                    .parent()
                    .find('.spoiler-block')
                    .html(data);
                alert(data); 
                $(this).on('click','b_button_responds',function (e) {
                    $(this)
                        .parent()
                        .find('.spoiler-block')
                        .html(data)
                        .slideToggle(300);
                })
            }
        )
    });
});


Данные в алерте выводятся, но не загружаются в блок. Почему так несправедливо устроен мир?
По-возможности, подскажите, можно ли как-то упростить код на js? Цель, сделать кнопку, при клике по которой будет отправляться запрос на получение данные на сервер, и показать эти данные в виде таблицы, нне обновляя страничку (у меня на отдельном примере это получается, но по клику страничка всеровно вверх перескакивает).

Последний раз редактировалось wolfio, 24.06.2018 в 15:59.
Ответить с цитированием
  #2 (permalink)  
Старый 24.06.2018, 16:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

wolfio,
возможный вариант ...
$(function () {
    $(".b_ad").on("click", ".b_button_responds", function (event) {
        event.preventDefault();
        var parent = $(this).parent(),
        id = parent[0].id,
        spoiler = parent.find('.spoiler-block'),
        text = spoiler.text();
        if(text) spoiler.slideToggle(300);
        else $.post("RespondsList"
            , {AdId: id}
            , function (data) { spoiler.html(data);})
            })
});
Ответить с цитированием
  #3 (permalink)  
Старый 24.06.2018, 16:36
Интересующийся
Отправить личное сообщение для wolfio Посмотреть профиль Найти все сообщения от wolfio
 
Регистрация: 10.02.2018
Сообщений: 22

Рони, почему-то не работает ваш код
может я где-то в другом месте ошибку допустил? как ее выловить?
Ответить с цитированием
  #4 (permalink)  
Старый 24.06.2018, 16:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от wolfio
как ее выловить?
смотреть консоль
Ответить с цитированием
  #5 (permalink)  
Старый 24.06.2018, 16:55
Интересующийся
Отправить личное сообщение для wolfio Посмотреть профиль Найти все сообщения от wolfio
 
Регистрация: 10.02.2018
Сообщений: 22

рони,
Поможете понять?

я не очень разбираюсь в консоли, пока что.
Ошибка возникает при клике. Сам скрипт валидный, и ошибок при загрузке страницы не имеет. Ошибка ведет куда-то в библиотку jQuery, как я понял. Но мне ни о чем не говорит. Я тут нарезал из браузера инфу.
Подскажете лекарство какое-нибудь?

https://i.paste.pics/3B2O0.png?trs=5...2d35dd1c8afd73
Ответить с цитированием
  #6 (permalink)  
Старый 24.06.2018, 16:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

wolfio,
неверно указал выше parent!
$(function () {
    $(".b_ad").on("click", ".b_button_responds", function (event) {
        event.preventDefault();
        var parent = event.delegateTarget,
        id = parent.id,
        spoiler = $('.spoiler-block', parent),
        text = spoiler.text(),
        str = "загрузка...";
        if(text) spoiler.slideToggle(300);
        else if(text != str){
        spoiler.text(str);
        $.post("RespondsList"
            , {AdId: id}
            , function (data) { spoiler.html(data);})
        }
            })
});

Последний раз редактировалось рони, 24.06.2018 в 17:00.
Ответить с цитированием
  #7 (permalink)  
Старый 24.06.2018, 17:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

wolfio,
смотрите пост №6 снова
Ответить с цитированием
  #8 (permalink)  
Старый 24.06.2018, 17:04
Интересующийся
Отправить личное сообщение для wolfio Посмотреть профиль Найти все сообщения от wolfio
 
Регистрация: 10.02.2018
Сообщений: 22

рони,
Просто красота)
большое спасибо)
Ответить с цитированием
  #9 (permalink)  
Старый 24.06.2018, 17:08
Интересующийся
Отправить личное сообщение для wolfio Посмотреть профиль Найти все сообщения от wolfio
 
Регистрация: 10.02.2018
Сообщений: 22

А можете подсказать еще такой вопрос подсказать, философо-канонический: как более правильно в вэб разработке принято делать, если ответ от сервера нужно из текста превратить в таблицу например? Обращать его на сервере в таблицу, или же на клиенте? или это не является важным критерием "..внокода"?)
Ответить с цитированием
  #10 (permalink)  
Старый 24.06.2018, 17:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

wolfio,
как вам удобнее или данные в виде JSON отправить на клиент и там сформировать таблицу или сразу html. чаще это строка JSON.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение 2ух объектов полученных при помощи XMLHttpRequest PawelGil AJAX и COMET 12 23.08.2015 12:56
Нуждаюсь в вашей помощи JavaScript Chris_Phils Работа 11 18.08.2015 16:36
ПОМОГИТЕ плиз!!! я Новичок нуждаюсь в помощи! Brand new you Javascript под браузер 1 11.10.2011 14:47
Вопрос сложный, для ГУРУ, очень нуждаюсь в Вашей помощи!!! saturn Элементы интерфейса 2 25.09.2011 11:34
Здравствуйте дорогие программисты! Я нуждаюсь в помощи! knyazsergei Events/DOM/Window 10 29.04.2010 17:14