За последние 24 часа нас посетили 19095 программистов и 1623 робота. Сейчас ищут 757 программистов ...

где ошибка в JS

Тема в разделе "PHP для новичков", создана пользователем LAlexS, 12 ноя 2014.

  1. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Есть select с регионами, при выборе подгружаются города в другой select. id(ucid) города в value подставляет, а вместо названия (city_name) пишет null.
    Код брал готовый, но дорабатывал под себя.
    Код (Text):
    1. <form action='#' method='get'>
    2.     <select name='region' id='region' class='delivery_city'>
    3.         <option value=0>Выберите регион:</option>";
    4.         $region_list = mysql_query ("SELECT * FROM region");
    5.     while ($region = mysql_fetch_array($region_list))
    6.         {echo "<option value='".$region['region_id']."'>".$region['region_name']."</option>";}
    7.     echo "</select>
    8.     <select name='city' id='city' disabled='disabled'>
    9.         <option value='0'> - </option>
    10.     </select>
    11. </form>
    JS
    Код (Text):
    1. $(document).ready(function () {
    2.  
    3.     $('#region').change(function () {
    4.  
    5.         var region = $(this).val();
    6.  
    7.         if (region == '0') {
    8.             $('#city').html('<option>- выберите -</option>');
    9.             $('#city').attr('disabled', true);
    10.             return(false);
    11.  
    12.         }
    13.         $('#city').attr('disabled', true);
    14.         $('#city').html('<option>загрузка...</option>');
    15.  
    16.         var url = 'get_city.php';
    17.  
    18.         $.get(
    19.             url,
    20.             "region=" + region,
    21.             function (result) {
    22.                 if (result.type == 'error') {
    23.                     alert('error');
    24.                     return(false);
    25.                 }
    26.                 else {
    27.  
    28.                     var options = '';
    29.  
    30.                     $(result.cities).each(function() {
    31.  
    32.                         options += '<option value="' + $(this).attr('ucid') + '">' + $(this).attr('city_name') + '</option>';
    33.                     });
    34.  
    35.                     $('#city').html('<option value="0">- выберите город -</option>'+options);
    36.                     $('#city').attr('disabled', false);
    37.                 }
    38.             },
    39.             "json"
    40.         );
    41.     });
    42. });
    get_city.php
    Код (Text):
    1. include_once 'connect_db.php';
    2. mysql_query ("set character_set_client='koi8r'");
    3. mysql_query ("set character_set_results='koi8r'");
    4. mysql_query ("set collation_connection='koi8r_general_ci'");
    5.  
    6. $region = @intval($_GET['region']);
    7.  
    8. $city_list=mysql_query("SELECT ucid, city_name FROM city WHERE parent_region=$region");
    9.  
    10. if ($city_list) {
    11.     $num = mysql_num_rows($city_list);    
    12.     $i = 0;
    13.     while ($i < $num) {
    14.        $cities[$i] = mysql_fetch_assoc($city_list);  
    15.        $i++;
    16.     }    
    17.     $result = array('cities'=>$cities);
    18. }
    19. else {
    20.     $result = array('type'=>'error');
    21. }
    22. print json_encode($result);
     
  2. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
  3. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Так это нельзя назвать ошибкой, он не подставляет значение нужное
     
  4. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Ошибка это когда что-то работает не так как нужно
     
  5. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Это в моем понимании ошибка, а с точки зрения кода ошибки нет. Просто он подставляет в значение не то, что мне надо. Что мне надо я написал, но не понимаю, что сделал неверно в коде! Отсюда и мой пост на этом форуме!
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну вот. у вас в голове одно представление, код выдает другое состояние. это и есть ошибка. процесс заставления процессора выдавать ожидаемые результаты называется отладка. которую вы и обязаны провести.
     
  7. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Кроме пустой болтовни может есть какие-то нормальные советы?
    Прежде, чем сюда постить, я уже по разному пытался отловить ошибку. Поэтому "умные" посылы на пхпфак и в прочие места, в данном случае, не к месту.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    как пытались отловить ошибку? это не пустая болтовня. мы-то умеем понимать состояния программы на разных этапах и знаем в каких местах ставить брейкпоинты для глубокого анализа. а вот как вы такой дерзкий отлаживали свой же код?
     
  9. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Ну, молодец! Возьми себе леденец и нарисуй медаль за то, что "в состоянии"!

    Я сейчас не прошу за меня написать код, я прошу указать мне на то, что сам не вижу. Или тут форум для неполовозрелых умников, которые пишут здесь для самоутверждения, а не для помощи?
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а ты знаешь мне честно посрать. ты взялся за задачу которая тебе не по плечу. потому что у тебя нет базиса программирования а ты уже пытаешься использовать фреймворки. тебя вот мама воспитала на людей бросаться но головой думать не научила. это печально... тут форум для людей в первую очередь. а люди умеют нормально общаться.
     
  11. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
  12. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Я первым делом в отладчике смотрел. Не в Хроме, а в Сафари (не считаю, что хуже). Нет ошибок! Здесь банальная невнимательность в коде, но я не могу увидеть.
     
  13. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну так промежуточные выводы значения переменных почему не сделать? чтоб точно отловить момент в который все ломается
     
  14. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Как нет ошибок? То есть код отработал так как тебе надо?
     
  15. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Похоже, что здесь неверно массив строится.
    Код (Text):
    1. $city_list=mysql_query("SELECT ucid, city_name FROM city WHERE parent_region=$region");
    2.  
    3. if ($city_list) {
    4.     $num = mysql_num_rows($city_list);    
    5.     $i = 0;
    6.     while ($i < $num) {
    7.        $cities[$i] = mysql_fetch_assoc($city_list);  
    8.        $i++;
    9.     }    
    10.     $result = array('cities'=>$cities);
    11. }
    Как я понял это неправильно, если выборка по 2 строкам?
    Код (Text):
    1. $result = array('cities'=>$cities);
     
  16. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    так можно посмотреть результат $result потом посмотреть где он использован и так дальше, везде проверять
     
  17. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Нет, в массиве все нормально!

    Ошибка кроется здесь. Но мои неважные знания js не позволяют разобраться. city_name как null передается.
    Код (Text):
    1. $(result.cities).each(function() {
    2.  
    3.                         options += '<option value="' + $(this).attr('ucid') + '">' + $(this).attr('city_name') + '</option>';
    4.                     });
     
  18. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Народ, ну помогите уже!