2013-04-12 98 views
0

我有兩個選擇 - 一個用於地區,一個用於城市。我想要的是,當我點擊region時,它通過Ajax進入我的數據庫並抓取正確的城市。其實我已經抓住了它,但我不能把它放在cities選擇。在選擇地區時捕捉城市

這裏是JS選擇功能onClick事件代碼,我的Ajax功能:

$.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

我這樣做與$(數據)。每個(函數(),謝謝 – 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)); 
相關問題