2016-12-06 6 views
2

У меня есть div, называемый demclients, который обновляется после сообщения ajax. Если пост ajax запускается, он создает нового клиента. Я хочу обновить поле select, чтобы я мог выбрать новый клиент, который только что создал.Update select2 с сообщением ajax, когда у вас есть функция php

<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');`. 

В заголовке функция выбора вызывается следующим образом:

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

Этот код работает только один раз. Я хочу обновить выбор, сохраняя при этом падение от функции select2(). Я попробовал несколько способов обновления это нравится:

  • ввода выберите функцию в demclients DIV, что обновления после АЯКС успеха
  • с использованием ВЫБ.2 («уничтожить»), а затем вызвать ВЫБ.2() еще раз, чтобы сделать его обновить

Но я просто не могу заставить его обновить поле выбора, сохраняя при этом падение из функции select2().

ответ

1

использовать успех обратного вызова метода нагрузки, поскольку Выбор2 должен вызываться только тогда, когда нагрузка выполняется и новый HTML доступен на странице

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

Это работает. Благодаря! –

+0

, если его рабочая и правильная метка ответят правильно, чтобы другие могли воспользоваться этой возможностью. :) –

+0

пока не могу, но я буду :) –