无法在codeigniter中使用ajax填充下拉列表
上面的链接在左侧有一个过滤器。我正在尝试使用ajax从州政府获取城市信息。但是当ajax被触发时,整个查询都在改变无法在codeigniter中使用ajax填充下拉列表,ajax,codeigniter,Ajax,Codeigniter,上面的链接在左侧有一个过滤器。我正在尝试使用ajax从州政府获取城市信息。但是当ajax被触发时,整个查询都在改变 SELECT * FROM (`ri_ad_post`) WHERE `state_slug` = 'west-bengal' AND `city_slug` = 'kolkata' AND `cat_slug` = 'pages' AND `expiry_date` > '2014-03-21' ORDER BY `id` DESC 它在查询控制器名为page
SELECT * FROM (`ri_ad_post`)
WHERE `state_slug` = 'west-bengal'
AND `city_slug` = 'kolkata'
AND `cat_slug` = 'pages'
AND `expiry_date` > '2014-03-21'
ORDER BY `id` DESC
它在查询控制器名为pages时使用控制器名
实际查询是:
SELECT *
FROM (`ri_ad_post`)
WHERE `state_slug` = 'west-bengal'
AND `city_slug` = 'kolkata'
AND `cat_slug` = 'electronics-and-technology'
AND `expiry_date` > '2014-03-21'
ORDER BY `id` DESC
//控制器
public function ad_list($state,$city,$category,$sub_cat=FALSE)
{
if($state===NULL || $city===NULL || $category===NULL)
{
redirect(base_url());
}
if ($sub_cat === FALSE)
{
$data['ad_list'] = $this->home_model->get_adlist($state,$city,$category);
}
$data['ad_list'] = $this->home_model->get_adlist($state,$city,$category,$sub_cat);
$this->load->view('templates/header1', $data);
$this->load->view('templates/search', $data);
$this->load->view('ad-list', $data);
$this->load->view('templates/footer', $data);
}
public function get_cities()
{
$state_id = $this->input->post('state');
echo $this->city_model->get_cities($state_id);
}
//家用模型
public function get_adlist($state,$city,$category,$sub_cat=FALSE)
{
if ($sub_cat === FALSE)
{
$this->db->where('state_slug', $state);
$this->db->where('city_slug', $city);
$this->db->where('cat_slug', $category);
$this->db->where('expiry_date >', date("Y-m-d"));
$this->db->order_by('id', 'DESC');
$query = $this->db->get('ad_post');
}
$this->db->where('state_slug', $state);
$this->db->where('city_slug', $city);
$this->db->where('cat_slug', $category);
$this->db->where('sub_cat_slug', $sub_cat);
$this->db->where('expiry_date >', date("Y-m-d"));
$this->db->order_by('id', 'DESC');
$query = $this->db->get('ad_post');
return $query->result_array();
//echo $this->db->last_query();
}
//状态模型
class State_model extends CI_Model {
public function __construct() {
$this -> load -> database();
}
function get_states() {
$query = $this->db->order_by('state', 'ASC')->get('state');
return $query->result_array();
}
}
//城市模型
class City_model extends CI_Model {
public function __construct() {
$this -> load -> database();
//$this->output->enable_profiler(TRUE);
}
function get_cities($state){
if($state != NULL){
$this->db->where('state_id', $state);
$query = $this->db->get('city');
$cities = array();
$html = '';
if($query->result())
{
$html .= '<select id="city_id" name="city_id">';
$html .= '<option value="">-- Select City --</option>';
foreach ($query->result() as $city)
{
$html .= '<option value="'.$city->id .'">'.$city->city.'</option>';
}
$html .= '</select>';
return $html;
}
else
{
return FALSE;
}
}
else
{
$html = '<option value="">--Select City--</option>';
return $html;
}
}
}
//阿贾克斯
<script type="text/javascript">
$(document).ready(function () {
$('#state_id').change(function () {
var selState = $(this).val();
alert(selState);
console.log(selState);
$.ajax({
url: "pages/get_cities",
async: false,
type: "POST",
data : "state="+selState,
dataType: "html",
success: function(data) {
$('#city').html(data);
$("#location_id").html("<option value=''>--Select location--</option>");
}
})
});
});
</script>
请帮我解决这个问题。请检查我提供的url,并尝试从“筛选器”部分选择一个状态。问题将更清楚。在controller中尝试此操作
public function get_cities()
{
$state_id = $this->input->post('state');
$cities = $this->city_model->get_cities($state_id);
echo '<option value="">-- Select City --</option>';
foreach($cities as $city){
echo '<option value="'.$city->id .'">'.$city->city.'</option>';
}
}
在ajax中
success: function(data) { $('#city_id').html(data)}
粘贴页面代码。phppublic函数get_adlist$state、$city、$category、$sub_cat=false对不起,公共函数ad_list$state、$city、$category,$sub_cat=false我已经粘贴了controller/pages.php第66行的控制器函数scan,因为它在第66行出现错误,即消息:未定义索引:cat_name有一些影响,但无法在城市下拉列表中获取数据我已对导致第66行错误的代码进行了注释
success: function(data) { $('#city_id').html(data)}