all.html(str);
и все заработало
Спасибо за ответ, теперь понятно - я создал блоки но старый обработчик события их не цепляет, нужно создать новый.
JS еще плохо знаю, можете помочь?
Вот моя функция генерации простыни отзывов
jQuery(".checked_comm_div input").click(function (e) { var votes = $("input[name='radio']:checked").val(); var objectid = $("#data-similar").attr("data-id"); var objectgroup = $("#data-similar").attr("data-type"); var all = $(".scomments-all"); jQuery.ajax({ type: 'POST', url: '/index.php', dataType: 'json', timeout: 5000, data: { option: 'com_comments', view: 'item', format: 'json', task: 'votes', votes: votes, objectid: objectid, objectgroup: objectgroup }, success: function (data) { console.log(data) let str = ''; let styleComments; let text_title; let status; for (var i = 0; i < data.length; i++) { str += '<div class="scomments-item ' + styleComments + '"' + status + '>'; ////далее еще много раз собирается str += } $("div.pagination").empty() all.html(str); } }); });
а вот функция обработки нажатия кнопок
jQuery(".scomments-vote a").click(function (e) { e.preventDefault(); var el = jQuery(this).parent(); var id = jQuery(this).attr("data-id"); var value = jQuery(this).attr("data-value"); jQuery.ajax({ type: 'POST', url: '/index.php', dataType: 'json', timeout: 5000, data: { option: 'com_comments', view: 'item', format: 'json', task: 'vote', value: value, id: id }, success: function (rows) { el.html('Спасибо ваш голос принят'); } }); });
попробовал ее сунуть после
получаю ошибки, не подскажите как ее корректно вставить?
Получилось так
SELECT count(*) AS bad, (SELECT count(*) FROM `comments_items` WHERE `object_group` = 'com_firm' AND `object_id` = 1698 AND `rate` = 3) AS neutrally, (SELECT count(*) FROM `comments_items` WHERE `object_group` = 'com_firm' AND `object_id` = 1698 AND `rate` > 3) AS goodFROM comments_items WHERE `object_group` = 'com_firm' AND `object_id` = 1698 AND `rate` <=2
Спасибо за помощь, продвинулся в понимании немного дальше. Решил не говнокодить и соблюсти стандарты. Вынес код JS в отдельный файл (который был уже ранее с другими функциями)
jQuery(document).on("click", ".checked_comm_div input", function() { var vote = $("input[name='radio']:checked").val(); //console.log(vote); jQuery('#msg').hide(); jQuery.ajax({ type: 'POST', url: '/index.php', dataType: 'json', timeout: 5000, data: { option: 'com_comments', view: 'item', format: 'json', vote: vote, task: 'getVoteComments' }, success: function (data) { console.log(data) } }); });
Пока еще работает только
console.log(vote)
Далее в файле такая функция
function getVoteComments() { $vote = JRequest::getVar('vote'); if (isset($vote)) { if ($vote == 'good') { $rate = ' AND `rate` >=4'; } elseif ($vote == 'neutrally') { $rate = ' AND `rate` =3'; } elseif ($vote == 'bad') { $rate = ' AND `rate` <=2'; } else { $rate = ''; } //тут запрос в базу } }
Правильно ли я понимаю
data: { option: 'com_comments', //указал какой компонент view: 'item', //указал какой файл - item.php task: 'getVoteComments', //вот тут сомневаюсь, как дать понять скрипту какая функция нужна? vote: vote
А можно узнать зачем ты обычный JS с Jquery смешиваешь? Прикрепи на класс или на ID операцию.
потому что я говнокодер, прошу помочь. Как нужно переделать верх чтобы все было на Jquery?
$.ajax({
и раскомментировать
//alert(myRadio.value); (чисто для проверки, нужные данные в функцию приходят
То аллерты срабатывают при нажатии на чекбоксы и показывают нужные данные. Так что функция есть и работает, что-то не так именно в после $.ajax({
В смысле нет, а это что?
function handleClick(myRadio) {