it-roy-ru.com

JQuery AJAX возвращение 404 не найдено

Я использую 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 определенно существует. Я могу просмотреть его, если наберу адрес в веб-браузере, однако при отправке формы консоль Chrome возвращает 404.

PHP находится в той же папке, что и HTML-страница, на которой работает JavaScript, поэтому я не понимаю, почему я продолжаю получать 404.

Обновление

Изменение POST на GET избавляет от ошибки 404, но возвращает внутреннюю ошибку сервера 500

ОБНОВЛЕНИЕ 2

Изменение действия формы на = "ValidateApplication.php" и отправка его как обычно (без AJAX) приводит к правильному файлу без каких-либо ошибок. 

6
Ashwin Sekar

Казалось, проблема с объектом 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);
        }
    });
}
3
Ashwin Sekar

У меня была та же проблема, и после 2 часов поиска причины ошибки 404 Not Found я обнаружил, что недавно играл с header() из PHP и забыл удалить следующую строку кода: 

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); 

После удаления мои функции Ajax снова стали нормальными.

3
CIRCLE

Для меня это было то, что я использовал поле ввода с name="name", которое заставляло вызываемую страницу возвращать 404. Странный материал, надеюсь, это кому-то поможет.

2
Tom Walter

Подтвердите, что вы правильно указали атрибут name = "" в форме Форма отправки подтвердит все атрибуты bean из атрибута name входных данных

0
Shahid Hussain Abbasi

Попробуйте добавить/перед именем файла: Url: '/ValidateApplication.php',

Попробуйте изменить тип запроса с POST на GET и посмотреть, работает ли он.

Попробуйте закомментировать части кода:

/*cache: false,
contentType: false,
processData: false,*/

Попробуйте другой браузер.

0
Greg K