我正在尝试在数据库中添加新客户端的过程中创建表单页面。该表格由一个选择标记组成,该选择标记具有添加门牌号的选项。但是在某些情况下,例如尚未将门牌号存储在数据库中,因此我决定创建一个按钮来添加新的门牌号(使用模式)。
表格:
<div class="col-md-3 form-group" id="autoload">
<label>
Household: <a data-toggle="modal" data-target="#addHousehold"
style="cursor: pointer; text-decoration: none;">
<i class="fa fa-plus" >Add</i></a>
</label>
<select class="form-control select2" style="width: 100%;">
<option selected="selected">Select Household</option>
<?php foreach($result3 as $row): ?>
<option><?=$row['house_no']?></option>
<?php endforeach ?>
</select>
</div>
添加新门牌号的脚本,并在成功添加新门牌号后刷新选择:
$('#addHouseholder').click(function(){
var householder = $('.householder').val()
var street = $('.strsel1').val();
$.ajax({
method: "POST",
url: "insert.php",
data: {householder:householder,street1:street}
}).then(()=>{
$("#autoload").load(" #autoload");
alert('Household Added')
})
此功能成功完成,唯一的问题是选择的分割变形。我也忘了说我重新加载了div,但是我想知道是否可以重新加载选择。我不确定如何执行此操作。期待您的帮助。非常感谢你!
答案 0 :(得分:0)
您是否正在使用select2(https://select2.org/)?
如果是这样,您可以使用程序控制选择的功能。
https://select2.org/programmatic-control/add-select-clear-items
使用:
var data = {
id: 1,
text: 'Barn owl'
};
var newOption = new Option(data.text, data.id, false, false);
$('#mySelect2').append(newOption).trigger('change');
您可以在ajax响应中返回该选项并填充选择。
答案 1 :(得分:0)
您只需要在insert.php文件中回显数据的json格式,然后将js脚本修改为
$.ajax({
type: "POST",
url: "path/insert.php",
data: {householder:householder,street1:street},
success: function(data){
// Parse the returned json data
var opts = $.parseJSON(data);
// Use jQuery's each to iterate over the opts value
$.each(opts, function(i, d) {
// You will need to alter the below to get the right values from your json object. Guessing that d.no / d.anyOtherInfo are columns in your data
$('#autoload').children(".orm-control.select2").append('<option value="' + d.no + '">' + d.anyOtherInfo + '</option>');
});
}
});
祝你好运。
编辑1:添加源。
检查https://v6.angular.io/api/forms/SelectControlValueAccessor