Я использую Ajax для передачи данных и файлов формы в файл PHP для обработки.
Javascript :
$("form#applyform").submit(function(){ var data = new FormData(); jQuery.each($('#file')[0].files, function(i, file) { data.append('file-'+i, file); }); $.ajax({ url: 'ValidateApplication.php', data: data, cache: false, contentType: false, processData: false, type: 'POST', success: function(data){ alert(data); } }); }
ValidateApplication.php
определенно существует. Я могу просмотреть его, если я набираю адрес в веб-браузере, однако, когда я отправляю форму, консоль хром возвращает 404.
PHP находится в той же папке, что и HTML-страница, на которой работает JavaScript, поэтому я смущен тем, почему я продолжаю получать 404.
ОБНОВИТЬ
Изменение POST в GET избавляет от ошибки 404, но возвращает 500 Internal Server Error
ОБНОВЛЕНИЕ 2
Изменение действия формы на = «ValidateApplication.php» и отправка ее как обычно (без AJAX) приводит к правильному файлу без каких-либо ошибок.
У меня была такая же проблема, и через 2 часа я искал то, что вызывало ошибку 404 Not Found, я обнаружил, что недавно играл с header()
с PHP и забыл удалить следующую строку кода:
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
После удаления его функции Ajax снова стали нормальными.
Это была проблема с объектом FormData
. Как только я изменил свой метод на использование .serialize()
, страница работала нормально.
$("form#applyform").submit(function(){ var data = $("form#applyform").serialize(); jQuery.each($('#file')[0].files, function(i, file) { data.append('file-'+i, file); }); $.ajax({ url: 'ValidateApplication.php', data: data, cache: false, contentType: false, processData: false, type: 'POST', success: function(data){ alert(data); } }); }
Попробуйте добавить / перед именем файла: url: '/ValidateApplication.php',
Попробуйте изменить тип запроса с POST на GET и посмотреть, работает ли он.
Попробуйте прокомментировать части кода:
/*cache: false, contentType: false, processData: false,*/
Попробуйте другой браузер.