更改另一个选择框值上的选择框在codeigniter中不起作用

Posted

技术标签:

【中文标题】更改另一个选择框值上的选择框在codeigniter中不起作用【英文标题】:changing select box on another select box value not working in codeigniter 【发布时间】:2021-11-22 20:39:02 【问题描述】:

我有一个 codeigniter 网站,其中有一个表单供用户选择类别和子类别,当用户选择类别时,子类别下拉列表应相应显示,我执行了以下代码:

public function subcategories() 
$category = $this->input->post('category');
$query = $this->db->query('SELECT name FROM subcategory WHERE parentcategory='.$category);
$data['subcategories'] = $query->result_array();
$this->load->view('homecontroller/subcategories', $data);
echo $category;

在 subcategories.php

<?php foreach ($subcategories as $c): ?>
    <option value="<?php echo $c['name'] ?>"><?php echo $c['name'] ?></option>
<?php endforeach; ?>

在我看来:

$(document).ready(function() 
  $('#sl_countries').change(function() 
    $('#sl_cities').load("<?php echo site_url('index.php/homecontroller/subcategories') ?>", 
      category: $(this).val()
    );
  );
);
<div class="form-group col-md-6">
  <label for="inputEmail4">Product Category</label>
  <select id="sl_countries" class="form-control" name="cname" aria-label="Default select example">
    <?php
 foreach($listcategory as $val)
  echo '<option value="'.$val->name.'">'.$val->name.'</option>';
 ?>
  </select>
</div>
<div class="form-group col-md-6">
  <label for="inputEmail4">Sub Category</label>
  <select class="form-control" name="sname" id="sl_cities"></select>
</div>

但是这不起作用,我在检查控制台时收到如下错误:

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取在第 1 行的 '' 附近使用的正确语法 SELECT name FROM subcategory WHERE parentcategory=

谁能告诉我这里出了什么问题,提前谢谢

【问题讨论】:

你的完整 jquery ajax 代码在哪里? @KUMAR 这只是我的 ajax 代码 请尝试我的答案。 【参考方案1】:

这样使用:-

jQuery Ajax 代码:-

<script>
$(document).ready(function()
 $('#country').change(function()
  var country_id = $('#country').val();
  if(country_id != '')
  
   $.ajax(
    url:"<?php echo base_url(); ?>dynamic_dependent/fetch_state",
    method:"POST",
    data:country_id:country_id,
    success:function(data)
    
     $('#state').html(data);
     $('#city').html('<option value="">Select City</option>');
    
   );
  
  else
  
   $('#state').html('<option value="">Select State</option>');
   $('#city').html('<option value="">Select City</option>');
  
 );
 
  );
  </script>

控制器代码:-

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Dynamic_dependent extends CI_Controller 
 
function fetch_state()
 
  if($this->input->post('country_id'))
  
   echo $this->dynamic_dependent_model->fetch_state($this->input->post('country_id'));
  
 
 
 ?>

型号代码:-

<?php
class Dynamic_dependent_model extends CI_Model


 function fetch_state($country_id)
 
  $this->db->where('country_id', $country_id);
  $this->db->order_by('state_name', 'ASC');
  $query = $this->db->get('state');
  $output = '<option value="">Select State</option>';
  foreach($query->result() as $row)
  
   $output .= '<option value="'.$row->state_id.'">'.$row->state_name.'</option>';
  
  return $output;
 
 
 ?>

查看代码:-

<div class="form-group">
   <select name="country" id="country" class="form-control input-lg">
    <option value="">Select Country</option>
    <?php
    foreach($country as $row)
    
     echo '<option value="'.$row->country_id.'">'.$row->country_name.'</option>';
    
    ?>
   </select>
  </div>
  <br />
  <div class="form-group">
   <select name="state" id="state" class="form-control input-lg">
    <option value="">Select State</option>
   </select>
  </div>

【讨论】:

我收到此错误您提交的 URI 包含不允许的字符。 检查你的 base_url 在值中,我想给出名称而不是 id 不给id而不是名字 你也添加 jquery cdn。上面的ajax代码。

以上是关于更改另一个选择框值上的选择框在codeigniter中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

JS/jQuery:使用下拉框在另一个字段中设置值,是不是正在更改以前的字段?

VBA根据选项按钮选择更新文本框值

如何在不更改选择框值的情况下选择选择框时更改html中的输入框值

Jquery:更改选择框值并激活单击状态

查询未拉入选择框值,oracle

根据组合框选择 C# 更改组合框值