Начните загрузку файла с помощью Javascript внутри JQuery Ajax вызова - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть следующая форма HTML:

<form id="message" data-file="assets/paper.pdf")">              
  <input type="text" name="email" id="email" />            
  <button class="button" type="submit">Download</button>                
</form>

Форма отправлена ​​с JQuery. Если это удается, мне нужно начать загрузку файла, URL-адрес которого находится в атрибуте data-file формы:

  $("#message").on("submit", function (event) {

    event.preventDefault();
    var $form = $(this);
    var data = $form.serializeToJSON();

    var file1 = $form.data('file');
    console.log(file1); // Returns "assets/paper.pdf"
    window.open(file1); // THIS WORKS

    $.ajax({
      url: "/api/messages",
      data: JSON.stringify(data),
      type: "post"
    })
    .done(function (data, status, xhr) {      

      var file2 = $form.data('file');
      console.log(file2); // Returns "assets/paper.pdf"
      window.open(file2); // THIS DOES NOT WORK

    })
    .fail(function (xhr, status, error) { console.log(error); });

  });

Если я использую window.open внутри done, загрузка не начинается.

Но если я попробую это раньше done, метод теперь работает. Есть идеи почему?

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