Форма отправки JQuery внутри цикла for - PullRequest
0 голосов
/ 13 декабря 2018
function GenerateZipPackage() {
    var drpListSelected = $("#drpCourse").chosen().val(); --I am using a chosen multiselect library 

    $.each(drpListSelected, function(i, courseId) {
        $('#CurrentCourseId').val(courseId);
        $("#frmZipPackages").submit();
    });
}

В зависимости от курса, я создаю пакет курса zip для скачивания.Но когда я запускаю этот код, я получаю только один zip-пакет для последнего CourseId в drpListSelected.Просматривая документацию JS, я думаю, что цикл .each является синхронным вызовом, поэтому все остальные вызовы отправки формы не вызываются.Я попытался немного осмотреться и нашел другой способ решить эту проблему: отправить весь список коду на стороне сервера и вернуть один zip-файл из нескольких zip-файлов для каждого курса.Но размер отдельного файла составляет около 2 МБ, и я уверен, что у меня возникнут исключения из памяти, если будет выбрано много идентификаторов курсов.Может ли кто-нибудь помочь мне в правильном направлении?Если я смогу отправить форму в последовательной очереди, я думаю, что с этим я покончу, ничего не изменив на стороне сервера (поскольку у нас уже есть код для создания одного пакета за один раз при отправке формы)

1 Ответ

0 голосов
/ 13 декабря 2018

Пример с вызовами ajax, введенными для отправки формы

 function GenerateZipPackage() {
        var drpListSelected = $("#drpCourse").chosen().val();  // we assume  drpListSelected = ['01', '23'];
      var $currentCurseId = $('#CurrentCourseId'); //defined once, used multiple times

      drpListSelected.forEach(function(courseId) {
        $currentCurseId.val(courseId);
        sendAjax(courseId);
      });
    }

    function sendAjax(courseId) {
      $.ajax('your url', {
        type: 'POST',
        data: {courseId:courseId},
        dataType: 'json',
        success: function(resp) {
          console.log(resp);
        },
        error: function(req, status, err) {
          console.error('something went wrong', status, err);
        }
      });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...