Нуждаюсь в помощи
Здравствуйте.
В целях саморазвития колхозю сайт, попутно изучая все что это требует, и периодически психуя на вселенную. с 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,
возможный вариант ... $(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);}) }) }); |
Рони, почему-то не работает ваш код
может я где-то в другом месте ошибку допустил? как ее выловить? |
Цитата:
|
рони,
Поможете понять? я не очень разбираюсь в консоли, пока что. Ошибка возникает при клике. Сам скрипт валидный, и ошибок при загрузке страницы не имеет. Ошибка ведет куда-то в библиотку jQuery, как я понял. Но мне ни о чем не говорит. Я тут нарезал из браузера инфу. Подскажете лекарство какое-нибудь? https://i.paste.pics/3B2O0.png?trs=5...2d35dd1c8afd73 |
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);}) } }) }); |
wolfio,
смотрите пост №6 снова |
рони,
Просто красота) большое спасибо) |
А можете подсказать еще такой вопрос подсказать, философо-канонический: как более правильно в вэб разработке принято делать, если ответ от сервера нужно из текста превратить в таблицу например? Обращать его на сервере в таблицу, или же на клиенте? или это не является важным критерием "..внокода"?)
|
wolfio,
как вам удобнее или данные в виде JSON отправить на клиент и там сформировать таблицу или сразу html. чаще это строка JSON. |
Часовой пояс GMT +3, время: 07:59. |