我想问一下如何从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没有值。所以它未能保存(附上截图)
答案 0 :(得分:0)
我有一个奇怪的解决方案:
我手动使用来自DB的值和文本选项。完成!我的代码变成这样:
<select class="shipping form-control" name="shipping_id">
<option value="<?php echo $data['shippingId']; ?>" selected><?php echo $shipping['name']; ?></option>
</select>
但是还有什么问题/原因吗?因为我认为这是奇怪的解决方案......(虽然它有效)