首页 > 解决方案 > foreach 将数据添加到 selectpicker

问题描述

我希望能够selectpicker使用选项来完成此操作,但这不会使用该 js 函数添加选项。我尝试上课 select,效果很好,但selectpicker确实有效。

HTML

  <select class="selectpicker form-control" data-style="btn-default"
        data-placeholder=".:: Dirección ::." tabindex="-1"
       data-minimum-results-for-search="10"  id="address" name="address">
  </select>

JS

$.each(response.result['address1'], function(k, v) {
    $('<option>').val(v.c_bpartner_location_id).text(v.address1).appendTo('#address');
 }); 

PHP

$address1[] = array();
foreach($records as $row) {
    $direccion = $row - > direccion;
    array_push($address1, array("address1" => $row -> address1,
        "c_bpartner_location_id" => $row -> c_bpartner_location_id))
}
$data['result'] = array(
    'direccion' => $direccion,
    'address1' => $address1);

可能是什么错误?

标签: javascriptselect

解决方案


$.each函数的回调有两个参数:键和值或数组和值中的索引。

在您的情况下,我假设您有 indireccionaddress1标量类型的值。对于您的示例,假设我们有一个这样的对象:

$data = [
  'result' => [
    'direccion' => 'left',
    'address1'  => 'Street 1, City',
  ]
];

因此,对于您的 JS 代码,您应该使用以下代码:

$.each(response.result['address1'], function(k, v) {
    $('<option>').val(v).text(v).appendTo('#address');
 }); 

因为对于关联数组的每个部分,$data['result']您将获得键值对(kv):

k: direccion, v: left
k: address1, v: Street 1, City

推荐阅读