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 с MVC

 PHP.SU

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


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

> Описание: Связанные списки с ajax с MVC
juramaj
Отправлено: 13 Января, 2015 - 19:37:07
Post Id


Гость


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


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




Уже запутался, и не могу понять как реализовать взаимосвязанные списки на ajax с использованием MVC
Вот как выглядят файлы:
controller_reg.php
PHP:
скопировать код в буфер обмена
  1. function action_checkregion()
  2.     {
  3.         $country_id = $_REQUEST['country_id'];
  4.         $responcess = array();
  5.         $responcess['success'] = 0;
  6.         $data_region = $this->model->get_data_region($country_id);
  7.         $responcess['success'] = $data_region;
  8.         echo json_encode($responcess);
  9.         die();
  10.     }

reg_view.php
PHP:
скопировать код в буфер обмена
  1.  <div class="form-group">
  2.                 <label for="disabledSelect">Выбирите страну</label>
  3.                 <select name="country_id" id="country_id" class="form-control">
  4.                     <option value="0">Страна</option>
  5.                     <?PHP
  6.                         foreach ($data['countries'] as $country['id'] => $country['country']){
  7.                             echo "<option value=".$country['id'].">".$country['country']."</option>";
  8.                         }
  9.                     ?>
  10.                 </select>
  11.             </div>
  12.  
  13.             <div class="form-group">
  14.                 <label for="disabledSelect">Выбирите регион</label>
  15.                 <select name="region_id" id="region_id" class="form-control">
  16.                    <option value="0">Регион</option>
  17.  
  18.                 </select>
  19.             </div>
  20.  
  21.             <div class="form-group">
  22.                 <label for="disabledSelect">Выбирите город</label>
  23.                 <select name="city_id" id="city_id" class="form-control">
  24.                     <option>Город</option>
  25.                 </select>
  26.             </div>

model_reg.php
PHP:
скопировать код в буфер обмена
  1. public function get_data_region($country_id)
  2.     {
  3.        // $id_country = $_GET['country_id'];
  4.         $reg_get_region = $this->db->query("SELECT * FROM `region` WHERE id_country='$country_id'");
  5.         $regions = array();
  6.         while ($row_region = $reg_get_region->fetch_assoc()){
  7.            $regions[$row_region['id']] = $row_region['region'];
  8.         }
  9.         return $regions;
  10.  
  11.      //   var_dump($regions);
  12.      //   die();
  13.     }

country.js
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function () {
  2.     $('#country_id').change(function() {
  3.         var country_id = $(this).val();
  4.         if (country_id == '0') {
  5.             $('#region_id').html('<option>Регион</option>');
  6.             $('#region_id').attr("disabled", "disabled");
  7.             $('#city_id').html('<option>Город</option>');
  8.             $('#city_id').attr("disabled", "disabled");
  9.         }
  10.         else{
  11.             checkRegion($(this).val());
  12.         }
  13.     });
  14. });
  15.  
  16. function checkRegion(country_id) { //Вывод регионов
  17.     $.ajax({
  18.         dataType: 'json',
  19.         url: '/reg/checkregion/?country_id='+country_id,
  20.         success: function (jsondata) {
  21.            $('#region_id').each(function(){
  22.                '<option value="' + $(this).attr('id') + '">' + $(this).attr('region') + '</option>';
  23.                $('#city_id').attr('disable', 'disable');
  24.            });
  25.         }
  26.        //  console.log(jsondata.success);
  27.     });
  28. }
 
 Top
teddy
Отправлено: 13 Января, 2015 - 21:12:10
Post Id


Участник


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


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




Не хочу показаться грубым, но Вы сами то хоть поняли, что спросили?

Селектбоксы, AJAX и MVC не имеют никакого отношения друг к другу, вообще никакого.
Посему вопрос
juramaj пишет:
как реализовать взаимосвязанные списки на ajax с использованием MVC
ни разу не корректный.

Опишите корректно проблему и быть может кто то поможет.
 
 Top
juramaj
Отправлено: 13 Января, 2015 - 21:15:42
Post Id


Гость


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


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




Как передать параметр "count_id" в метод public function get_data_region($country_id) который находится в model_reg.php
 
 Top
teddy
Отправлено: 13 Января, 2015 - 21:21:22
Post Id


Участник


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


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




Как, как? По протоколу HTTP. Затем получаете данные параметра в контроллере, вызываете нужный метод модели передавая этот самый параметр, получаете результат и отправляете в вид или делаете что то ещё. Не знаю, что конкретно требуется.
 
 Top
juramaj
Отправлено: 13 Января, 2015 - 22:44:42
Post Id


Гость


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


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




А как мне вот сюда вывести данные с массива
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.                         options += '<option value="' + $(this).attr('region_id') + '">' + $(this).attr('name') + '</option>';
  3.                  

если я передаю в этом массиве $responces
Меня интересует сама запись.
 
 Top
teddy
Отправлено: 13 Января, 2015 - 23:12:25
Post Id


Участник


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


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




Прежде чем использовать $.each, Вам нужно преобразовать JSON строку в объект.
Далее пройтись по нему(данные должны быть под ключем success как я понял из Вашего кода), и добавить в нужный селектбокс option-ы с полученными от сервера значениями.

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var data = $.parseJSON(json);
  3.  
  4. $.each(data.success, function(key, value) {
  5.    
  6.     $('#selectBoxSelector').append($("<option/>", {
  7.         value: key,
  8.         text: value
  9.     }));
  10.  
  11. });
  12.  

(Отредактировано автором: 13 Января, 2015 - 23:16:20)

 
 Top
juramaj
Отправлено: 13 Января, 2015 - 23:21:53
Post Id


Гость


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


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




Ну вот у меня контроллер обрабатывает вот такой код
PHP:
скопировать код в буфер обмена
  1. function action_checkregion()
  2.     {
  3.         $country_id = $_REQUEST['country_id'];
  4.         $responces = array();
  5.         $responces['success'] = 0;
  6.         $data_country_id = $this->model->get_data_region($country_id);
  7.         $responces['success'] = $data_country_id;
  8.         echo json_encode($responces);
  9.         die();
  10.     }

Данные с модели уже переданы в него. Вот как в этом случае мне обработать дальнейшие действия в js файле чтобы получился массив?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB