Select2 Ajax选定的数据值

时间:2018-04-21 14:40:09

标签: php ajax jquery-select2

我想问一下如何从ajax中选择默认值来选择2?我的ajax代码:

// Customer
$('.shipper').select2({
    placeholder: "Choose Shipper",
    selectionTitleAttribute: false,
    ajax: {
        url: 'getCustomer.php',
        dataType: 'json',
        data: function (params) {
            return {
                filter_name: params.term
            };
        },
        processResults: function (data) {
            return {
                results: $.map(data, function (obj) {
                    return {id: obj.customer_id, text: obj.name};
                })
            };
        },
        cache: true
    },
    initSelection: function (element, callback) {
        return callback({id: "<?php echo $data['customerId']; ?>", text: '<?php echo $shipper['name']; ?>'});
    }
});

虽然我的PHP代码获取数据是这样的:

<?php

include('config.php');
$json = array();

if (isset($_GET['filter_name'])) {
    $clientId = $_GET['filter_name'];
    $query = "SELECT * FROM m_customer WHERE c_name LIKE '%$clientId%' AND c_status > 0 ORDER BY c_name ASC LIMIT 0,10";
} else {
    $query = "SELECT * FROM m_customer WHERE c_status > 0 ORDER BY c_name ASC LIMIT 0,10";
}
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $json[] = array(
        'customer_id' => $row['c_id'],
        'name' => strip_tags(html_entity_decode($row['c_name'], ENT_QUOTES, 'UTF-8')),
    );
}

echo json_encode($json);
?>

我正在为我的PHP文件创建更新页面。所以我需要从我的数据库中选择这个select2。这就是我从数据库获取数据然后尝试设置为initSelection的原因。它已经显示并被选中。但是当我按下保存按钮(并从inspect元素中查看我的代码)时,select没有值。所以它未能保存(附上截图)

enter image description here

1 个答案:

答案 0 :(得分:0)

我有一个奇怪的解决方案:

我手动使用来自DB的值和文本选项。完成!我的代码变成这样:

<select class="shipping form-control" name="shipping_id">
     <option value="<?php echo $data['shippingId']; ?>" selected><?php echo $shipping['name']; ?></option>
</select>

但是还有什么问题/原因吗?因为我认为这是奇怪的解决方案......(虽然它有效)