Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: AJAX + PHP + MYSQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Fier
Отправлено: 10 Декабря, 2012 - 13:32:39
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Проблема: то что при выборе области, область заноситься в переменную, а город почему-то не выберается.

При помощи аджакса выводиться алерт, область заполняется, город пустой полность. Укажите где ошибка, либо подскажите где копать.
Сижу вторые сутки. Делал по примеру, но ввел свои корективы.

Сама форма:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <td>
  3.                                         Регион:<font color="red">*</font>
  4.                                         </td>
  5.                                         <td>
  6.                                         <div style="display: none" id="loading_region"><img alt="" src="/img/ajax_loader.gif" />Загрузка...</div>
  7.                                         <div>
  8.        
  9.                                         <select name="regionid" id="region" onchange="getList('city', 'region')" style="width:300px;">
  10.                                     <?php
  11.                                     $sql = mysql_query("SELECT id,name FROM region");
  12.                                     $row = mysql_fetch_array($sql);
  13.                                     do {
  14.                                         printf('
  15.                                         <option value="%s">%s</option>
  16.                                         ',$row['id'],$row['name']);}
  17.                                         while ($row = $row = mysql_fetch_array($sql));
  18.                                     ?>
  19.                                     </select>
  20.                                         </div>
  21.                                         </td>
  22.                                         </tr>
  23.                                         <tr>
  24.                                         <td>
  25.                                         Город:<font color="red">*</font>
  26.                                         </td>
  27.                                         <td>
  28.                                         <div style="display: none" id="loading_city"><img alt="" src="/img/ajax_loader.gif" />Загрузка...</div>
  29.                                         <div>
  30.                                         <select name="city_id" id="city" style="width:300px;">
  31.                                     <option>-Выберите город-</option>
  32.                                                                          
  33.                                     </select>
  34.                                         </div>
  35.  





Прикрутил я аджакс:

Код:

CODE (javascript):
скопировать код в буфер обмена
  1.  <script type="text/javascript">
  2.  
  3. $(document).ready(function(){
  4.     $("#button").click(function(){
  5.  
  6.      var region = $("#region").val();
  7.      var city = $("#city").val();
  8.            
  9.          alert(region + "-" + city);  
  10.            
  11.       $.ajax({
  12.  * * * * *type: "POST",
  13.  * * * * *url: "save_clients.php",
  14.  * * * * *data: {
  15.  * * * * * * *region: region,
  16.  * * * * * * *city: city,
  17.  
  18.  * * * * }
  19.  });
  20.  });
  21.  
  22.  });
  23.  
  24. </script>


Повесил его на кнопку. Вот только слабый все же прогресс. Алертом оно выводит все равно только область. Почему-то оно не подтягивает города.

Код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. mysql_connect('localhost', 'root', '111' );
  3. mysql_query('set names utf8');
  4.  
  5. $id   = (int)$_POST['id']; // id объекта (страна или регион)
  6. $type = $_POST['type']; // тип списка, который нужно получить (города или регионы)
  7.  
  8. sleep(1); // картинка
  9.  
  10. if ($type == 'city') {
  11.         // выбираем города в данном регионе
  12.         $result = mysql_query('SELECT *
  13.                            FROM city
  14.                            WHERE region_id = '.$id.'
  15.                            ORDER BY name');
  16.         if (!empty($result)) {
  17.                 echo "out.options[out.options.length] = new Option('-Выберите город-','none');\n";
  18.                 while ($city = mysql_fetch_array($result)) {
  19.                         echo "out.options[out.options.length] = new Option('".$city['name']."','".$city['city_id']."');\n";
  20.                 }
  21.         }
  22.         else {
  23.                 echo "out.options[out.options.length] = new Option('нет городов','none');\n";
  24.         }
  25. }
  26. /* if ($type == 'region') {
  27.         // выбираем регионы в данной стране
  28.         $result = mysql_query('SELECT *
  29.                             FROM region
  30.                             WHERE country_id = '.$id.'
  31.                             ORDER BY name');
  32.         if (!empty($result)) {
  33.                 echo "out.options[out.options.length] = new Option('выберите регион...','none');\n";
  34.                 while ($region = mysql_fetch_array($result)) {
  35.                         echo "out.options[out.options.length] = new Option('".$region['name']."','".$region['region_id']."');\n";
  36.                 }
  37.         }
  38.         else {
  39.                 echo "out.options[out.options.length] = new Option('нет регионов','none');\n";
  40.         }
  41. } */
  42. ?>


Вот city.php на который посылается аджакс при обновлении городов:

Код:

CODE (javascript):
скопировать код в буфер обмена
  1. <!-- Города -->
  2.  
  3. <script type="text/javascript" src="js/jquery.js"></script>
  4.                         <script type="text/javascript">
  5.                         function getList(type, obj) {
  6.                                 $('#loading_' + type).show();
  7.                                 $.post('/blocks/city.php', {type: type, id: $('#'+obj).val()}, onAjaxSuccess);
  8.                                 function onAjaxSuccess(data) {
  9.                                         out = document.getElementById(type);
  10.                                                 for (var i = out.length - 1; i >= 0; i--) {
  11.                                                 out.options[i] = null;
  12.                                                 }
  13.                                         eval(data);
  14.                                         $('#loading_' + type).hide();
  15.                                 }
  16.                         }
  17.                         </script>


<!-- Города -->

Короче курю дальше. Не могу найти в чем проблема, почему СЕЛЕКТ не запоминает город.
 
 Top
Zuldek
Отправлено: 18 Декабря, 2012 - 15:15:24
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Постится обычно суть задачи, суть проблемы, исходники, описываются ваши попытки решить проблему.
До чего вы продвинулись в своем "курении"?

Просто смотреть на скрипты результата будет мало если там не явный бред.

0. смотрим лог ошибок брауезера (если пусто и не присходит прозрения, - идем дальше).
1. Включаем багтрекер
2. смотрим что уходит аяксом
3. смотрим что приходит от сервера
4. если на этом этапе ничему не удивляемся (вероятнее всего, - удивляемся), то делаем вывод полученных с сервера данных и смотрим почему не хочет выполняться ваш eval().
Вероятнее всего, - потому что мы либо не доходим до этого этапа, либо передаем методу бред (см пункт 0).
Ставить себе ваши скрипты нет никакого желания.
Отлаживайте сами по указанному порядку, либо показывайте где можно посмотреть в работе, коли отлаживать самостоятельно так не хочется.

(Отредактировано автором: 18 Декабря, 2012 - 15:19:01)

 
 Top
Fier
Отправлено: 18 Декабря, 2012 - 19:07:21
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Вывожу через алерт полученные данные. Область выводит, точнее записывает айдишник, нормально вроде. А вот город почему то не запоминает и просто пропуск (пустое поле) выводится в алерт.

Сам список городов он подтягивает и запоняет в зависимости от того какая область выбрана.
 
 Top
Zuldek
Отправлено: 19 Декабря, 2012 - 09:28:06
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Соответственно, - смотрите firebugom или чем удобно не приходит ли у вас город с сервера. Если (Скорее всего) не приходит (ведь вы не можете его вывести), - идем на серверный скрипт, делаем вывод отладочной информации на каждом этапе работы:
1. Вывод полученных от клиента параметров.
2. Вывод тела запроса и результата запроса к бд либо mysql_error()
3. Вывод сформированного ответа, который отправляется обратно в клиент и который вы передаете в eval()
4. На клиенте выводите алертом все полученные в выводе на ajax-запрос данные.

(Отредактировано автором: 19 Декабря, 2012 - 09:29:05)

 
 Top
Fier
Отправлено: 22 Декабря, 2012 - 11:14:08
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Вывод городов идет. Я получаю список. Но когда я передаю данные на сервер, он их не получает. Тоесть переменная = 0.

Алертом я вывожу. Область показывает а город нет.
 
 Top
Fier
Отправлено: 23 Декабря, 2012 - 19:24:46
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Решил этот вопрос.

Возник уже другой.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB