Асинхронный HTTP-запрос и bootstrap -multiselect - PullRequest
0 голосов
/ 02 августа 2020

Я застрял на проблеме, которая у меня была сегодня большую часть дня. Я использую js, чтобы заполнить динамическую таблицу c из базы данных. В рамках этой таблицы я использую bootstrap -multiselect , чтобы создать раскрывающиеся меню для фильтрации в нескольких столбцах. Я делаю асинхронный вызов в своем javascript, чтобы получить значения для раскрывающегося списка из моей базы данных, которая работает - она ​​получает значения, которые я ищу. Но похоже, что ответ и создание этого элемента происходит после запуска сценария множественного выбора. Насколько я понимаю, я не могу отложить выполнение сценария, поскольку он не ссылается на внешний файл, и я не уверен, как поместить сценарий, который делает элемент множественного выбора, в сценарий, который создает таблицу. Я как бы сузил его до проблемы с временем ответа запроса / сервера asyn c, потому что проблема является прерывистой, и выбор каждый раз заполняется параметрами, но сценарий множественного выбора должен создавать серию флажков с значения - пустой список предполагает, что параметры не были заполнены при выполнении сценария.

SCRIPT IN HTML
<script src = "js/shows.js"></script>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
<script type="text/javascript" src="js/bootstrap-multiselect.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('#selectBand').multiselect();
        $('#selectVenue').multiselect();
      });
</script>
JAVASCRIPT FOR POPULATING TABLE (abridged js/shows.js)

function loadFilter(filter){
var table = document.getElementById('dataTable');
  var req = new XMLHttpRequest();
  if (filter == 'Band'){
    req.open('GET', 'myserver/getBands', true);
      req.addEventListener('load', function(){
    if (req.status >= 200 && req.status < 400){
    var bandFilter = document.getElementById('selectBand');
    var data = JSON.parse(req.responseText);
    for (i in data.rows){
      var option = document.createElement('option');
      option.value=Object.values(data.rows[i]);
      option.innerHTML=Object.values(data.rows[i]);
      bandFilter.appendChild(option);
      // console.log(data);
    }
  }
  })
  req.send(null);
}

Есть ли у кого-нибудь из вас какие-либо предложения о том, как заставить эти отдельные сценарии выполнять в нужное время? Я нарезал свой js на некоторое время, думая, что могу исправить это с помощью множества обратных вызовов и асинхронных c функций, но продолжал останавливаться с той же проблемой. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...