Я создал script, который использует $.ajax и FormData для передачи двух объектов формы в PHP. Один объект формы - это текст, а другой - файл.
Он отлично работал как автономный script. Однако после того, как я добавил его в Wordpress, как плагин, он продолжает давать мне "Uncaught TypeError: Illegal invocation"
.
Я не могу позволить сериализовать formdata просто потому, что тогда я не смогу передать файл функции обратного вызова в PHP.
JS с использованием FormData перед вызовом ajax:
var fd = new FormData();
var file = jQuery(this).find('input[type="file"]');
var caption = jQuery(this).find('input[name=img_caption]');
var individual_file = file[0].files[0];
fd.append("file", individual_file);
var individual_capt = caption.val();
fd.append("caption", individual_capt);
Эта часть выше на 100% правильна.
Ajax call:
jQuery.ajax({
type: 'POST',
url: fiuajax.ajaxurl,
data: {
action: 'fiu_upload_file',
security: fiuajax.security,
data: fd,
contentType: false,
processData: false,
},
success: function(response){
var dataObj = jQuery.parseJSON(response);
if(dataObj.message == 'error') {
jQuery('.fiu_validation').html('The following error occured: '+dataObj.desc);
}
else if(dataObj.message == 'success') {
jQuery('.fiu_file').val('');
}
console.log(response);
}
});
Это невероятно расстраивает, так как отлично работает вне Wordpress. Я попытался удалить регистрацию jQuery Wordpress и поставить последнюю версию jQuery, но это не имело никакого значения.
Напомним:
1) Ajax/jQuery отказывается передать объект формы в PHP
2) Невозможно сериализовать объект, потому что мне нужно сохранить файл-объект
3) script работает за пределами Wordpress
4) Пробовал обновление до новейшей версии jQuery, без изменений