我有两个选择-一个用于地区,另一个用于城市。我想要的是,当我点击region时,它会通过Ajax转到我的数据库,并抓取正确的城市。实际上我已经抓取了它,但是我不能把它放在cities select中。
下面是我在JS Select function 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中:
<select id="city_select" name="city">
<?php foreach($this->cities as $city): ?>
<option ><?php echo $city['c_name'] ?></option>
<?php endforeach; ?>
</select>发布于 2013-04-12 17:30:50
您没有正确使用数据,应该正确使用
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);发布于 2013-04-12 17:39:41
在成功回调中,您可以执行以下操作:
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));
});
}未经过测试,但它应该可以工作。
发布于 2013-04-12 17:40:07
您需要创建选项标记来填充select
$('#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));https://stackoverflow.com/questions/15967620
复制相似问题