如何在codeigniter中将ajax选择的依赖下拉选项传递给mysql数据库

Posted

技术标签:

【中文标题】如何在codeigniter中将ajax选择的依赖下拉选项传递给mysql数据库【英文标题】:How to pass an ajax selected dependent dropdown option to mysql database in codeigniter 【发布时间】:2020-01-01 03:53:49 【问题描述】:

我在一个表单中有两个相关的下拉框。从它们中,我将使用一个依赖下拉框的选定选项来更新数据库中表中的列字段。但是,我真的想不通,在我按下表单的提交按钮后,如何从这个依赖下拉框中获取所选选项并将其传递给数据库。

我正在使用 ajax 来完成这项任务。我已经学习了一些教程,但它们只显示了如何在没有任何提交按钮的依赖下拉框中动态添加选项。但是,我需要将我从下拉框中选择的依赖下拉选项的值传递给 DB,以便在按下提交按钮后更新列。

这是我的控制器:

public function fetch_session() 


                if($this->input->post('subject'))
                
                    echo $this->Result_Model->fetch_session($this->input->post('subject'));
                

                if($this->input->post('syllabus'))
                
                    echo  $this->Result_Model->fetch_syllabus($this->input->post('syllabus'));
                 

            

这是我的模型:

public function fetch_session($subject) 
                $this->db->select('session');
                $this->db->group_by('session');
                $this->db->from('student');
                $this->db->where('subject',$subject);
                $query = $this->db->get();

             $output = '<option value="">Select Session</option>';
        foreach ($query->result() as $row) 
  $output .= '<option value="'.$row->subject.'">'.$row->session.'</option>'; 
              
              return $output;
             


        public function fetch_syllabus($syllabus) 
            $this->db->select('profile');
            $this->db->group_by('profile');
            $this->db->from('syllabus');
            $this->db->where('subject',$syllabus);
            $query = $this->db->get();
            $output = '<option value="">Select Syllabus</option>';
            foreach ($query->result() as $row) 
  $output .= '<option value="'.$row->subject.'">'.$row->profile.'</option>';
              
              return $output;
         

这是我的观点:

<body>
    <div class = "container" align = "center">
    <br><br>

    <?php echo form_open('Result_Controller/fetch_session'); ?> 

    <label>Subject</label>

    <select class="col-sm-2 custom-select custom-select-sm" 
        name="subjects" id="subjects">
    <option value = "">Select Subject</option>
    <option value = "CSE">CSE</option>
        <option value = "Fisheries">Fisheries</option>
        <option value = "Agriculture">Agriculture</option>
    <option value = "NFS">NFS</option>
        </select>                   
        <br><br>

  <label>Session</label>
   <select class="col-sm-2 custom-select custom-select-sm" name="session" id="session">
    <option value="">Select Session</option>  
  </select>
    <br><br>

      <label>Syllabus</label>
      <select class="col-sm-2 custom-select custom-select-sm" name="syllabus" id="syllabus">
      <option value="">Select Syllabus</option> 
      </select>
      <br><br>
      <input type="submit" value="Submit">
       </form>
</div>

<script src = "<?php echo base_url('/js/jquery-3.js') ?>"></script>
<script src = "<?php echo base_url('bootstrap/js/bootstrap.min.js') ?>"></script>

</body>
</html>

<script>
$(document).ready(function() 
    $('#subjects').change(function() 
        var subject = $('#subjects').val();

        if(subject != '')
        
            $.ajax(
    url:"<?php echo base_url();?>/Result_Controller/fetch_session",
    method: "POST",
    data:subject:subject,
    success:function(data)
                    
            $('#session').html(data);
            
        );
    

    if(subject != '')
    
         $.ajax(
        url:"<?php echo base_url();>/Result_Controller/fetch_session",
        method: "POST",
        data:syllabus:subject,
        success:function(data)
        
        $('#syllabus').html(data);
          
        );
             
    );
);
</script>

据我所知,我已经完成了最后 10 个小时的工作。我知道这是不完整的,甚至可能是错误的代码。但我需要知道,我应该进一步做什么。我在 CI 工作了一段时间,但我对 Ajax 完全陌生。所以,如果有人认为,我可能需要先阅读一些资源,请分享一些。我已经阅读了很多关于这个问题的文章,但到目前为止没有任何帮助。

提前谢谢...

【问题讨论】:

【参考方案1】:

在您看来,当您从脚本中触发 ajax 帖子时,您应该删除这部分:

&lt;?php echo form_open('Result_Controller/fetch_session'); ?&gt; &lt;/form

然后在您的脚本中将您的提交按钮更改为&lt;input type="button id="submitbtn" value="Submit"&gt; 并且由于您想在按下提交按钮后触发更新,因此将保存 ajax 帖子的事件更改为 submitbtn 按钮的单击事件。

【讨论】:

嗯,第一个下拉框(主题)的选项可以很容易地发布到控制器,我也可以在控制器中打印它,因为选项是以静态方式插入的。但是,我无法将相关下拉框的选项发布到控制器。它们是从数据库中动态获取的,而不是静态获取的。你能告诉我,我怎样才能从控制器的依赖下拉框中打印选定的选项?在这种情况下,它是会话和教学大纲框。 您可以通过$('#optionID :selected').text() 从您的选择组件中获取选定的值。 抱歉,我真的无法将这个东西放在我的脑海里。可以给一些代码sn-p吗? 您可以查看此链接,了解如何使用 jquery ***.com/questions/10659097/…在下拉列表中获取所选选项 天哪!我终于让它工作了。解决方案并不难。但由于我是 ajax 新手,我很难找到问题所在。您给定的链接确实对我有所帮助。非常感谢你。 :-D

以上是关于如何在codeigniter中将ajax选择的依赖下拉选项传递给mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Codeigniter 中将值从视图传递到模型

如何将ajax上的数据传递给codeigniter控制器

可以在 CodeIgniter 视图中将 Javascript 或 jQuery 代码编写为 PHP 文件吗?

CodeIgniter 中的 Ajax 上传返回“您没有选择要上传的文件”

如何在 CodeIgniter 分页中将类名设置为 <a> 标签

如何在 Select2 中将参数附加到 ajax 请求?