За последние 24 часа нас посетили 18773 программиста и 1672 робота. Сейчас ищут 1733 программиста ...

Почему скрипт срабатывает только после второго нажатия

Тема в разделе "JavaScript и AJAX", создана пользователем Voliki, 10 май 2017.

  1. Voliki

    Voliki Новичок

    С нами с:
    10 апр 2017
    Сообщения:
    19
    Симпатии:
    0
    Здравствуйте, есть список который заполняется из БД по выбору элемента из списка заполняется второй список элементами из бд, но проблема в том что когда выбираешь элемент ничего не происходит, после повторного выбора скрипт начинает работать, подскажите из-за чего так может быть
    сам скрипт
    Код (Javascript):
    1. function col(_this){
    2.             var _select = document.getElementById("content");
    3.             var kat = document.getElementById("kategory");
    4.             $('#kategory').change(function(){
    5.             $.ajax({
    6.                 type: "POST",
    7.                 url: "show.php",
    8.                 data: "kategory="+$("#kategory").val(),
    9.                 success: function(html){
    10.                 $("#content").html(html);
    11.                 }
    12.             });
    13.         //return false;
    14.         _select.style.display="inline";
    15.         });
    16.            
    17.         }
    список
    HTML:
    1. <p>  <select id="kategory" onChange="col(this)" required>
    2.                               <option disabled value="0">ВЫБЕРИТЕ КАТЕГОРИЮ</option>  
    3.                             <?
    4.                                //Выводим категории и ее ID
    5.                                while ($row=mysql_fetch_array($result))
    6.                                {
    7.                                    print "<option value=".$row['id'].">";
    8.                                     print $row['kategory'];
    9.                                     echo("</option>");
    10.                                 }
    11.                              
    12.                             ?>
    13.                         </select>
    14.                      </p>
    15.                     </div>
    16.                     <select required id="content"  style="display: none;">
    17.                         <option disabled value="0">ВЫБЕРИТЕ КУРС</option>
    18.                     </select>
    и обработчик
    PHP:
    1. <?php
    2. include "auth.php"; //Подключаем БД
    3. //делаем запрос на товары этой категории
    4. $query = "SELECT * FROM `spr_kurs` WHERE `idkat` ='".$_REQUEST['kategory']."'";
    5. $result = mysql_query($query) or die(mysql_error());
    6. // выводим товары полученные по запросу
    7. while ($row=mysql_fetch_array($result))
    8. {
    9.     print "<option value=".$row['id'].">";
    10.     print $row['kurs'];                              
    11.     echo("</option>");
    12. }
    13. ?>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    752
    Адрес:
    Татарстан
    оставляем только
    HTML:
    1. <select id="kategory"  required>
    функцию выкидываем нафиг и оставляем так
    Код (Javascript):
    1.    
    2.             $('#kategory').change(function(){
    3.             $.ajax({
    4.                 type: "POST",
    5.                 url: "show.php",
    6.                 data: "kategory="+$("#kategory").val(),
    7.                 success: function(html){
    8.                   $("#content").show();
    9.                   $("#content").html(html);
    10.                 }
    11.             });
     
    Voliki нравится это.
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    До кучи:
    1) Автор, осваивайте отладку.
    2) У вас запросы уязвимы к SQL-инъекциям. Нельзя напрямую использовать данные, полученные от клиента.
    3) Расширение mysql_ устарело и удалено из свежих версий PHP. Используйте вместо него расширение mysqli_.
     
  4. Voliki

    Voliki Новичок

    С нами с:
    10 апр 2017
    Сообщения:
    19
    Симпатии:
    0
    ADSoft, Благодарю, все работает
    Fell-x27, Благодарю, учту все ваши советы
     
  5. Voliki

    Voliki Новичок

    С нами с:
    10 апр 2017
    Сообщения:
    19
    Симпатии:
    0
    Будьте добры подскажите как сделать 3 и 4 уровня и тд. делаю третий список по аналогии не работает, ничего не отображается, запрос работает проверял, все тоже самое только название таблицы и полей другое а не работает, надо из второго списка выбрать пункт и третий заполняется данными из базы
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    752
    Адрес:
    Татарстан
    так как у вас уже второй уровень генерируется динамически - нужно использовать .on
    Код (Javascript):
    1.  $('#content').on("change",function(){
     
  7. Voliki

    Voliki Новичок

    С нами с:
    10 апр 2017
    Сообщения:
    19
    Симпатии:
    0
    что-то не получается
    вот скрипт, что то они не хотят взаимодействовать
    Код (Javascript):
    1. $('#content').on("change",function(){
    2.             $.ajax({
    3.                 type: "POST",
    4.                 url: "show1.php",
    5.                 data: "content="+$("#content").val(),
    6.                 success: function(html){
    7.                 $("#pod").show();
    8.                 $("#pod").html(html);
    9.                 }
    10.             });
    11.         return false;
    12.         });
    вот пхп обработчик, запрос рабочий
    PHP:
    1. <?php
    2. include "auth.php"; //Подключаем БД
    3. //делаем запрос на товары этой категории
    4. $query = "SELECT * FROM `spr_podkat` WHERE `idkurs` =".$_REQUEST['content']."";
    5. $result = mysql_query($query) or die(mysql_error());
    6. // выводим товары полученные по запросу
    7. while ($row=mysql_fetch_array($result))
    8. {
    9.     print "<option value=".$row['id'].">";
    10.     print $row['podkat'];
    11.     echo("</option>");
    12. }
    13. ?>
    а вот элемент куда вставляю, и он пустой
    HTML:
    1. <select id="pod">
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    752
    Адрес:
    Татарстан
    значит что-то неверно... почитайте про отладку
    посмотрите - идут и вообще запросы к вашему скрипту, если идут - то какой ответ получают
     
    Voliki нравится это.
  9. Voliki

    Voliki Новичок

    С нами с:
    10 апр 2017
    Сообщения:
    19
    Симпатии:
    0
    Благодарю, ошибка была в имени файла, там пробел был :confused: