2

multiselect を ajax にバインドしたいのですが、ajax の呼び出し後に項目が表示されません。multiselect を再構築または更新しようとしましたが、まだ表示されません

 <script type="text/javascript">
     $(document).ready(function () {

         var categCheck = $('#multiselect').multiselect({
             includeSelectAllOption: true,
             enableFiltering: true
         });


         $.ajax({
             type: 'GET',
             url: "@Url.Content("~/Home/Listpositions/")",
             success: function (data) {
                 $.each(data.data, function (index, item) {
                     alert(item.PositionName);
                     var opt = $('<option />', {
                         value: item.PID,
                         text: item.PositionName
                     });
                     opt.appendTo(categCheck);

                 });
             }
         });
         $('#multiselect').multiselect('rebuild');
         categCheck.multiselect('rebuild');

         categCheck.multiselect('refresh');
         $("select.multiselect").multiselect("refresh");
   });
        </script>

これが私の multiSelect ページのリンクです: http://pratikisara.com/Home/Quick これは複数選択ですが空です

複数選択された JS ファイルから ajax 呼び出しを行うにはどうすればよいですか (ここにリンクの説明を入力してください)、どのコード ブロックで ajax 呼び出しを行う必要がありますか?

4

3 に答える 3

3

AJAX 成功関数で再構築および/または更新する必要があります。コードでは、AJAX 呼び出しが行われ、次に複数選択が再構築されます。ただし、AJAX 呼び出しが成功する前に再構築が行われる場合があります。これを試して:

<script type="text/javascript">
   $(document).ready(function () {

     var categCheck = $('#multiselect').multiselect({
         includeSelectAllOption: true,
         enableFiltering: true
     });


     $.ajax({
         type: 'GET',
         url: "@Url.Content("~/Home/Listpositions/")",
         success: function (data) {
             $.each(data.data, function (index, item) {
                 alert(item.PositionName);
                 var opt = $('<option />', {
                     value: item.PID,
                     text: item.PositionName
                 });
                 opt.appendTo(categCheck);

                 // Rebuild after adding the options!
                 $('#multiselect').multiselect('rebuild');
             });
         }
     });
  });
</script>
于 2016-09-02T14:00:15.213 に答える