За последние 24 часа нас посетили 22372 программиста и 1150 роботов. Сейчас ищут 611 программистов ...

В чём ошибка?

Тема в разделе "JavaScript и AJAX", создана пользователем Даниль1999, 31 июл 2018.

Метки:
  1. Даниль1999

    Даниль1999 Новичок

    С нами с:
    3 окт 2017
    Сообщения:
    66
    Симпатии:
    0
    Не работает этот кусок:
    Код (Javascript):
    1. <script>
    2. $('[name~="button3000"]').click(function() {
    3.     $('.selecter2').each(function(i,elem) {
    4.     if (elem.text().length>0){
    5.         $.ajax({
    6.         url: 'profile/block.php',
    7.         method: 'POST',
    8.         data: {vopros: elem.text()}
    9.         alert(elem.text());
    10.     });
    11.     break;
    12.     }
    13. });  
    14. });
    15. </script>
    есть:
    HTML:
    1. <select name="kenty1" class="selecter2">
    HTML:
    1. <input class="knopka"  type="button"    title="Заблокировать подписчика"
    2.    name="button3000" formaction="index.php?profile&id=<?=$_SESSION['obraz_n'].'#top'; ?>" value="БЛОКИРОВАТЬ ПОДПИСЧИКА" form="general_form" >
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Это заметно даже невооруженным глазом. В консоль заглядывайте изредка, очень способствует.
    Методы jQuery применимы к объектам jQuery, а elem таковым не является.
    Код (Javascript):
    1. $(elem).text()
    Дальше уже у меня возникают пара вопросов:
    1. Чего вы ожидаете от метода text(), применяя его к select-у? Что-то мне подсказывает, что результат будет не такой, как вы хотите. Скорее всего, вам нужен метод val().
    2. Зачем вам цикл, если вы его пытаетесь прервать после первой же итерации, к тому же совсем неуместным способом?
    3. Селектор [name~="button3000"] говорит следующее - найти элементы с атрибутом name, у которого среди значений перечисленных через пробел, может быть и значение button3000. Я не говорю, что это невозможно, но я пока не встречал на практике атрибуты name со списком значений. У вас именно так?

    И уберите alert из объекта.
    --- Добавлено ---
    Код (Javascript):
    1. const select = $('.selecter2');
    2. $('[name="button3000"]').on('click', function() {
    3.   let val = select.val();
    4.   if (val) {
    5.     $.ajax({
    6.       url: 'profile/block.php',
    7.       method: 'POST',
    8.       data: {
    9.         vopros: val
    10.       }
    11.     });
    12.   }
    13. });
     
  3. Даниль1999

    Даниль1999 Новичок

    С нами с:
    3 окт 2017
    Сообщения:
    66
    Симпатии:
    0
    Спасибо, открыл глаза на много минусов. Я только третий день пишу на jQuery. Это удивительный язык.

    А где находится эта консоль?
    --- Добавлено ---
    У меня 4:

    HTML:
    1. <select name="kenty1" class="selecter2">
    С одним классом, разные имена.

    Кнопка одна.
    Есть ещё поле:
    HTML:
    1. <input type=text class="pole"   name="ii" id="ii" checked  placeholder="Номер кента">
    Логика такая: если в инпут лежит значение или в одном из 4 селект есть выбранное значение, то после нажатия на кнопку должен сработать ajax с этой строчкой.

    Напиши пожалуйста, как ты видишь.
     
  4. Даниль1999

    Даниль1999 Новичок

    С нами с:
    3 окт 2017
    Сообщения:
    66
    Симпатии:
    0
    Исправь ошибки просто здесь. Твой код у меня не срабатывает.
    Код (Javascript):
    1. <script>
    2. $('[name~="button3000"]').click(function() {
    3.     if ($("select.selecter2  option:selected").text().length>0) {
    4.     $.ajax({
    5.     url: 'profile/block.php',
    6.     method: 'POST',
    7.     data: {vopros: $("select.selecter2  option:selected").text()}
    8.     alert($("select.selecter2  option:selected").text());
    9.     });
    10.     }
    11.     else if ($('[name~="ii"]').val().length>0){
    12.     $.ajax({
    13.     url: 'profile/block.php',
    14.     method: 'POST',
    15.     data: {vopros: $('[name~="ii"]').val()}
    16.     });
    17.     }
    18. });
    19. </script>
     
  5. Даниль1999

    Даниль1999 Новичок

    С нами с:
    3 окт 2017
    Сообщения:
    66
    Симпатии:
    0
    Всё сделал сам. Спасибо.