jQuery: неподдерживаемый тип носителя с данными формы - PullRequest
0 голосов
/ 02 марта 2019

Я загружаю данные формы через REST API, и у меня есть следующий код, который я использую.Это дает мне код ошибки 415 с неподдерживаемым типом носителя.

Пожалуйста, исправьте меня, где я ошибаюсь.

var device = new FormData();
device.append("device_id", "2");
device.append("Img","D:\\Main\\xampp\\htdocs\\test\\img\\default.png");

$.ajax(
        { 
            type: 'POST', 
            url: getApiURL(25),
            data: device,
            processData: false,
            "mimeType": "multipart/form-data",
            headers: { 
                "Authorization": "Basic " + base_64_firebase_token,
                "Content-Type": "application/x-www-form-urlencoded",
            },
            success : function(data){
                callback(data);
            }, 
            error: function (xhr,ajaxOptions,throwError){
                console.log(xhr);
                console.log(ajaxOptions);
                console.log("Error!!!"+throwError);
            }
        }
);

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

При вызове AJAX вам необходимо указать тип контента:

headers: {
   'Accept': 'application/json',
   'Content-Type': 'application/json'
},
0 голосов
/ 02 марта 2019

Если вы хотите добавить только статическое изображение, то сделайте это на стороне сервера, если хотите, или добавленное пользователем изображение, которое вы должны отправить, выполните следующие действия:

Для правильного использования данных формы вам нужно сделать 2 шага.,

Подготовка

Вы можете передать всю форму FormData () для обработки

var form = $('form')[0]; // You need to use standard javascript object here
var formData = new FormData(form);

или указать точные данные для FormData ()

var formData = new FormData();
formData.append('section', 'general');
formData.append('action', 'previewImg');
// Attach file
formData.append('image', $('input[type=file]')[0].files[0]); 

Форма отправки

Запрос Ajax с jquery будет выглядеть так:

$.ajax({
    url: 'Your url here',
    data: formData,
    type: 'POST',
    contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+)
    processData: false, // NEEDED, DON'T OMIT THIS
    // ... Other options like success and etc
});

После этого он отправит запрос Ajax, как вы отправляете регулярноформа с enctype="multipart/form-data"

Обновление: этот запрос не может работать без type:"POST" в опциях, так как все файлы должны быть отправлены через запрос POST.

Примечание: contentType: false доступно только с jQuery 1.6 и далее

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