2013-04-12 5 views
0

У меня есть два выбора - один для регионов и один для городов. Я хочу, когда я нажимаю на region, он отправляется в мою БД через Ajax и захватывает правильные города. На самом деле я уже схватил его, но я не могу поместить его в cities.улавливать города при выборе региона

Вот моя функция Ajax в JS Выбор функции кода события OnClick:

$.ajax({ 
       url: '/map/index/ajax', 

      type: 'POST', 
      dataType: 'json', 
      data: { 
       // list of request parameters 
       'r_alias': valueRegionSelect 
      }, 
      success: function(data) { 
       console.log(data); 
       $('#city_select').val(data.c_name); 
      } 
     }); 

console.log (данные) показывают

[Object { r_id="39", r_alias="cu", c_id="4649", c_name="Kyev" more...}, Object 
, more...}] 

именно то, что мне нужно.

Ajax Контроллер:

public function ajaxAction() { 
     $alias = $this->_getParam('r_alias'); 
     $result = Map_Model_Map_Factory::getCityByRegionAlias($alias); 

     $this->view->cities = $result; 
     $this->_helper->json($result); 
    } 

Так как я могу положить его в мой выбор:

<select id="city_select" name="city"> 
          <?php foreach($this->cities as $city): ?> 
          <option ><?php echo $city['c_name'] ?></option> 
          <?php endforeach; ?> 
         </select> 

ответ

1

Вы не правильно, используя данные, он должен быть

var html = ""; 
for (var i = 0; i < data.length; i++) 
{ 
    html += '<option value="' + data[i].c_id + '">' . data[i].c_name . '</option>'; 
} 
$('#city_select').html(html); 
+0

я сделал это с $ (данные) .each (функция(), спасибо – Stopper

1

В ваш обратный вызов успеха вы могли бы сделать следующее:

success: function(data) { 
    //data  = $.parseJSON(data); 
    var select = $('#city_select').empty(); 

    $.each(data, function(i, item) { 
     select.append($('<option></option>') 
       .attr('value',item.c_id) 
       .text(item.c_name)); 
    }); 
} 

Не проверено, но оно должно работать.

+0

'data' уже в формате JSON – slash197

+0

О, да , ты прав. Я отредактирую. – Lebugg

1

Вам нужно создать вариант теги для заполнения вашего выбора

$('#city_select').empty(); 
for (var i = 0; i < data.length; i++) 
    $('#city_select').append($('<option>').val(data[i].c_id).html(data[i].c_name)); 
Смежные вопросы