#javascript #php #jquery #wordpress #file-upload
#javascript #php #jquery #wordpress #загрузка файла
Вопрос:
Я хочу загрузить файл с помощью jQuery / Ajax в моем плагине WordPress. Вызов javascript для PHP работает. Итак, подключение и т. Д. работает. Но как только я отправляю FormData, необходимые для публикации файлов, я больше не получаю доступ к функции PHP.
Javascript,
var doesntWork = new FormData();
doesntWork.append('file', 'a name');
var withthisItWorks = 'text'
var data = {
'action': 'emfi_file_upload',
'data': doesntWork
}
$.ajax({
type: "POST",
url: ajax_object.ajaxurl,
data: data,
success: function(response) {
jQuery('#emfi-message').html(`<span style="color: green;">Respons: ${response}</span>`);
}
});
Функция PHP просто возвращает строковый ответ:
function emfi_file_upload_callback() {
echo 'Yes, in the callback';
wp_die();
}
Когда я помещаю обычный текст в свой объект данных, я получаю ответ от функции PHP. Когда я ввожу FormData, ответа нет. Я перепробовал множество примеров в Интернете, но каждый раз все сводится к этому. Добавление ContentType: false и ProcessData: false, как упоминалось где-то еще, не помогло. Что не так?
Ответ №1:
Все отправляемые поля должны быть в объекте formdata .
Кроме того, для FormData для работы с jQuery.ajax processData
и contentType
должно быть установлено значение false.
var doesWork = new FormData();
doesWork.append('file', someFile);
doesWork.append('action', 'emfi_file_upload');
$.ajax({
type: "POST",
url: ajax_object.ajaxurl,
data: doesWork,
contentType: false,
processData: false,
success: function(response) {
jQuery('#emfi-message').html(`<span style="color: green;">Respons: ${response}</span>`);
}
});