重新加载特定的Selection标签,而无需重新加载整个页面

时间:2018-11-30 09:59:05

标签: javascript php jquery json

我正在尝试在数据库中添加新客户端的过程中创建表单页面。该表格由一个选择标记组成,该选择标记具有添加门牌号的选项。但是在某些情况下,例如尚未将门牌号存储在数据库中,因此我决定创建一个按钮来添加新的门牌号(使用模式)。

表格:

<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,但是我想知道是否可以重新加载选择。我不确定如何执行此操作。期待您的帮助。非常感谢你!

2 个答案:

答案 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