【问题标题】:javascript code to get multiple checked values from listbox phpjavascript代码从列表框php获取多个检查值
【发布时间】:2016-08-03 04:44:06
【问题描述】:

我的表单中有两个依赖选择框,用于选择国家和州。

我有一个用于选择国家/地区的多选复选框下拉菜单, 我想获取所选国家/地区的状态

但我不明白如何在我的函数中从 javascript 传递多个检查的 id。

下面是我的html选择列表框代码

<?php
                                        echo $this->Form->input('UserLogDetail.service_area_category_id', array(
                                            'id' => 'shipping_type',
                                            'required' => false, 
                                            'multiple' =>'multiple',
                                            'type' => 'select',                                           
                                            'class' => 'form-control drop-arrow',
                                            'label' => false,
                                            'options' => $serviceCategory,
                                            'empty' => '--Select--'
                                        ));
                                        ?>

<?php
                                        echo $this->Form->input('UserLogDetail.skills', array(
                                            'class' => 'form-control',
                                            'required' => false,
                                            'id' => 'skill',
                                            'label' => false,
                                            'options' => '$states',
                                            'empty' => '--Select--'
                                        ));
                                        ?>  

javascript函数

<script type="text/javascript">
    $(document).ready(function() {
        $("#shipping_type").on('change', function() {
            var id = $(this).val();           
            if (id) {
                 var dataString = 'id=' + id;
                $.ajax({
                    type: "POST",
                    url: '<?php echo Router::url(array("controller" => "Profiles", "action" => "loadSkills"),true); ?>',
                    data: dataString,
                    dataType: 'JSON',
                    cache: false,                  
                   success: function(html) {                       
                        $("#skill").html("");
                        $.each(html, function(key, value) {
                            $('<option>').val('').text('select');
                            $('<option>').val(key).text(value).appendTo($("#skill"));
                        });
                        $('#skill').selectpicker('refresh');
                    }
                });
            }
        });
});
</script>

控制器功能

public function loadSkills() {
        $this->loadModel('Skill');
        $states = array();
        if (isset($this->request['data']['id'])) {
        $states = $this->Skill->find('list', array('fields' => array('Skill.id','Skill.skill_name'),'conditions' => array(
        'Skill.service_area_category_id IN' => explode(",",$this->request['data']['id']))));
        }         
        echo json_encode($states);
        exit();
    } 

【问题讨论】:

    标签: javascript jquery cakephp


    【解决方案1】:

    尝试在下面调用ajax

    javascript:

     $("#shipping_type").change(function() {
    
       $.ajax({
                    type: "POST",
                    url: '<?php echo Router::url(array("controller" => "Profiles", "action" => "loadSkills"),true); ?>',
                    //passing data to php   
                    data: { id:$(this).val()  },
                    dataType: 'JSON',
                    cache: false,                  
                   success: function(html) {                       
                        $("#skill").html("");
                        $.each(html, function(key, value) {
                            $('<option>').val('').text('select');
                            $('<option>').val(key).text(value).appendTo($("#skill"));
                        });
                        $('#skill').selectpicker('refresh');
                    }
                });
     });
    

    php

     public function loadSkills() {
        $this->loadModel('Skill');
        $states = array();
          //Getting post id
        if (isset($this->request['id'])) {
        $states = $this->Skill->find('list', array('fields' => array('Skill.id','Skill.skill_name'),'conditions' => array(
        'Skill.service_area_category_id IN' => explode(",",$this->request['data']['id']))));
        }         
        echo json_encode($states);
        exit();
    } 
    

    【讨论】:

    • 但是在复选框选择事件中,loadskills 函数没有从我的 ajax 调用....我正在使用多个复选框选择标签来选择多个国家...请参阅下面的 url 以获取参考 .users.skavt.net/blaz/MultiSelect/demo.html
    • 不,这不起作用...我在控制台中看到,但在复选框单击事件中,当我检查我的选择标签内的值时,没有触发任何操作..
    【解决方案2】:
    public function loadSkills() {
            $this->getServiceArea();
            $this->loadModel('Skill');
            $skills = array();
            if (isset($this->request['data']['id'])) {
            $ids = explode(",",$this->request['data']['id']);
            if(count($ids)>1){
                $skills = $this->Skill->find('list', array('fields' => array('Skill.id','Skill.skill_name'),'conditions' => array(
                'Skill.service_area_category_id IN' => $ids)));
                } else {
                $skills = $this->Skill->find('list', array('fields' => array('Skill.id','Skill.skill_name'),'conditions' => array(
            'Skill.service_area_category_id' => $ids)));
                }          
            }
            echo json_encode($skills);
            exit();
        } 
    

    【讨论】:

      猜你喜欢
      • 2014-10-21
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      相关资源
      最近更新 更多