2016-12-06 43 views
2

我有一个叫做demclients的div,它在ajax post之后被刷新。如果ajax文章运行,它创建一个新的客户端。我想更新选择字段,以便我可以选择刚刚创建的新客户端。当你有php的功能时用ajax post更新select2

<div class="demclients"> 
    <div class="form-group"> 
      <label class="col-md-4 control-label" for="textinput">Klant zoeken</label> 
      <div class="col-md-4"> 
       <select id="allclients" style="width:300px;" name="client" required> 
        <?php foreach($user->getAllClients() as $klant) { ?> 
         <option value="<?= $klant['id']?>"><?= $klant['naam']?></option> 
        <?php } ?> 
       </select> 
      </div> 
    </div> 
</div> 

此代码获取所有的客户端,并显示他们在选择字段,这是我想要的。但是现在我想创建一个新的客户端(这是通过引导模式完成的)。

$("form#createclient").submit(function (event) { 

    var postForm = $('form#createclient').serialize() +    
     '&name=' + $('input[name=name]').val() +      
     '&email=' + $('input[name=email]').val() +      
     '&perms=' + $('input[name=rechten]').val(); 

    $.ajax({ 
     type: "POST", 
     url: "?page=clientmail", 
     data: postForm, 
     cache: false, 
     success: function (result) { 
      alert('Nieuwe klant aangemaakt'); 
      $('.demclients').load('?page=uploadoverview' + ' .demclients'); 
     } 
    }); 
    event.preventDefault(); 

}); 

所以提交函数从输入的所有信息,并进入了该网页clientmail创建一个新的客户端信息,在那之后我更新的信息:

`$('.demclients').load('?page=uploadoverview' + ' .demclients');`. 

在头select函数被调用:

$(document).ready(function() { 
    $("#allclients").select2(); 
}); 

此代码只运行一次。我想更新选择,同时仍然保持从select2()函数的下拉菜单。我试图更新它喜欢的多种方法:

  • 将选择功能在阿贾克斯 成功
  • 后更新使用选择2(“毁灭”)的demclients格,然后调用选择2()再次以使其更新

但我只是无法得到它来更新select字段,同时保持从select2()函数下拉。 load方法的

回答

1

使用成功回调,因为选择2只应该在负载完成,新的HTML可以在页面

success: function (result) { 
      alert('Nieuwe klant aangemaakt'); 
      $('.demclients').load('?page=uploadoverview' + ' .demclients', function(){ 
       //success load event 
       $("#allclients").select2(); 
      }); 
     } 
+0

这个工程叫。谢谢! –

+0

如果它的工作和正确将答案标记为正确,那么其他人可以从中获得帮助。 :) –

+0

不能做到这一点,但我会:) –