选择JS不发送POST数据

时间:2014-04-25 06:08:11

标签: javascript php jquery codeigniter

我正在使用Chosen JS插件,以使我的选择框更酷,更漂亮;但是,通过POST将此数据发送到PHP时,某些事情并不完全正确。注意,我也在使用codeigniter。

这是我的HTML:

<select id="mySelect" name="multiple[]" multiple="multiple">
    <option value="1">Something</option>
    <option value="2">Something</option>
    <option value="3">Something</option>
    <option value="4">Something</option>
</select>

这是我的JS:

$('#mySelect').chosen({
    max_selected_options: 4,
    place_holder_text_multiple: "Pick your poison(s)"
});

最后,我的CodeIgniter模型,我在其中捕获表单发送的数据并将其插入数据库。

// I want them to be introduced in the column of the database all together,
// separated by commas. 
$string = implode(",", $this->input->post('multiple'));

但是,这只会获得用户引入的第一个值。

喜欢,如果他/她选择"1, 4, 5"

它只获得"1"

我错过了什么吗?先谢谢你。

更新我还检查了chrome的控制台,以检查数据是否正在发送。这就是我得到的。我没有足够的声誉来发布图片,但这里是链接。

My Results

2 个答案:

答案 0 :(得分:1)

我没有足够的声誉来评论。

尝试将其强制转换为数组

$string = implode(",", (array) $this->input->post('multiple'));

或循环数组并将值附加到字符串

$msg = "";
foreach($this->input->post('multiple') as $key=>$val){
     $msg = $msg . "," . $val;
}

答案 1 :(得分:0)

对我来说,将数据提交到数据库的原因

<div>
  <div class="col-12 col-md-6">
    <label>Chosen Multi Select with search</label>
    <select data-placeholder="Select Countries..." name = "countries[]" class="chosen_select form-control" tabindex="2" multiple="">
      <option value="1">Republic of Biafra</option>
      <option value="2">Arewa Republic</option>
      <option value="3">Oduduwa Republic</option>
      <option value="4">Abiriba</option>
    </select>
  </div>

  <button type="submit" class="btn btn-sm">Submit</button>
</div>

然后,对于我的控制器,我尝试检查提交的输入字段名称country []是否具有如下所示的值,然后通过我的模型提交给数据库:

if ( $this->input->post() ){

  $data = $this->input->post('countries');
  print_r($data);
  $this->load->model->('country);
  $this->country->add($data);
}

当我选择Biafra,Abiriba和Oduduwa共和国时,我的输出变成了

Array
(
    [0] => Republic of Biafra
    [1] => Abiriba
    [2] => Oduduwa Republic
)

由于提交的字段位于数组中,因此我将数据循环到国家/地区模型中,以便将数组变成单个字符串,如下所示:

class Country {

  public function add ($data = ""){

     if (isset($data) && !empty($data)){
         // print_r($data);
         $str = '';
         foreach ($data as $value) {
             $str .= $value;
             $str .= ', '; // add separator between sub-arrays
         }
         $str = rtrim($str, ', '); // remove last separator
                print_r($str); // print to see output of what we just did
         // Here you can countinue your database command
     }
  }
}

print_r()函数的输出为:

"1, 4, 3"

希望这对您有帮助