Я пытался выяснить, как загрузить файл через ajax в течение последних нескольких часов и ничего.
Вот код: HTML:
<form action="" method="post" id="uploadForm" enctype="multipart/form-data"> <input type="file" name="image" id="image"> <input type="submit"> </form>
JS:
<script> jQuery(document).ready(function(){ jQuery('form#uploadForm').on('submit', function(e){ e.preventDefault(); var file = jQuery('#image')[0].files[0]; var form_data = new FormData( jQuery("form#uploadForm")[0] ); form_data.append( 'image', file ); jQuery.ajax({ url: 'index.php?a=do', type: 'POST', processData: false, contentType: false, cache: false, data: form_data, success: function(response) { console.log(response); }, }); return false; }); }); </script>
PHP:
<?php $a = isset($_GET['a']) ? $_GET['a'] : ''; if($a <> '') { echo "result - "; var_dump($_POST); die(); } ?>
В результате я получаю пустой массив, однако, если оставить поле файла пустым, я получаю:
result - array(1) { ["image"]=> string(9) "undefined" }
Я пробовал serialize (), serializeObject (), serializeArray (), $ .param и каждое проклятое время, когда я получаю ошибку «undefined function» в консоли.
Я прошел через десятки подобных вопросов в stackoverflow, и ничего не помогло. Я попытался сделать $ .post вместо $ .ajax, а поле данных, содержащее form_data, пуст.
Мне нужно это для плагина WordPress, и я стараюсь избегать использования сторонних JS-плагинов для загружаемой части.