2016-12-06 42 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

不能做到這一點,但我會:) –