Загрузка файлов Framework 7 через ajax

я пытаюсь загрузить файл с ajax в Framework 7.

код был сделан для публикации формы, но требование изменилось и добавлена ​​загрузка файла вместе с ней.

я безуспешно пытался изменить существующий код.

он выдает ошибку, когда я прикрепил файл с помощью new FormData(). Я пытался реализовать несколько методов для прикрепления файла, но, к сожалению, ни один из них не работает.

если кто поможет решить проблему

Uncaught TypeError: недопустимый вызов

function addVoiceMail() {
  var status = '0'; 
  var formData = myApp.formToJSON('#my-form-sms');
  var data2 = JSON.stringify(formData);

  var fileInput = document.getElementById("msg_file");
  var post_data = new FormData();
  if (fileInput.files.length > 0) {
    post_data.append('file' , fileInput.files[0]);
  }
$.ajax({
  url: baseurl2 + 'somepage.php',
  type: "POST",
  data: {
    Data: data2,
    file: post_data,
  },
  crossDomain: true,
  cache: false,
  success: function (data) {
    if (data == 'success') {
      myApp.alert('sent', '');
      mainView.router.load({
        url: 'success.html',
        ignoreCache: true,
        animatePages: true
      });
    }else {
      var errors = JSON.parse(data);
      $.each(errors, function (key, value) {
        myApp.addNotification({
          title: 'Error',
          message: value
        });
      });
    }
  }
});

}


person fesi meh    schedule 02.01.2018    source источник
comment
Вы исправили свою проблему с ответом?   -  person Djiggy    schedule 23.01.2018


Ответы (1)


Ваш объект data должен содержать только объект FormData. Вы должны добавить data2 непосредственно в объект FormData.

Попробуйте что-то вроде этого:

var formData = new FormData();
formData.append('file', myFile); //append file to FormData
formData.append('data', data2); //add additionnal informations

Наконец, передайте объект formData в данные ajax:

$.ajax({ 
   data: formData,
   ...
});
person Djiggy    schedule 08.01.2018