2014-06-23 12 views
6

Używam Ajax do przekazania moich danych formularzy i plików do pliku PHP do przetworzenia.Jquery ajax powrót 404 nie znaleziony

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 pewno istnieje. Mogę to zobaczyć, gdy wpisuję adres w przeglądarce internetowej, jednak po przesłaniu formularza, konsola chrome zwraca 404.

PHP jest w tym samym folderze co strona HTML, na której jest uruchomiony JavaScript, więc jestem zdezorientowany dlaczego wciąż otrzymuję 404.

UPDATE

Zmiana POST na GET pozbywa się błąd 404, ale zwraca błąd 500 serwera wewnętrznego

UPDATE 2

Zmiana działania formularz do = "Vali dateApplication.php "i przesłanie go w normalny sposób (bez AJAX) prowadzi do poprawnego pliku bez żadnych błędów.

+0

struktura folderów proszę – mithunsatheesh

+6

Czy poprawiono wielkość liter? Niektóre systemy operacyjne/serwery sieci web inaczej traktują wielkie litery. (tzn. "ValidateApplication.php" to nie to samo, co "validateapplication.php" ani "Validateapplication.php"). – esqew

+0

Jaki jest pełny adres URL w przeglądarce internetowej, który działa? Czy próbowałeś ustawić pełny adres URL, a nie tylko "ValidateApplication.php", jak napisałeś? – JakeGould

Odpowiedz

2

Wygląda na to, że jest problem z obiektem FormData. Gdy raz zmieniłem metodę na używanie .serialize(), strona działała dobrze.

$("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); 
     } 
    }); 
} 
+0

Czy jesteś pewien, że napisałeś to poprawnie? Wynik zastosowania 'serialize' nie jest czymś, co ma metodę' append'! – Alexander

0

Spróbuj dodać/przed nazwą pliku: url: '/ValidateApplication.php',

Spróbuj zmienić typ żądania od GET i POST, aby sprawdzić, czy to działa.

Spróbuj zakomentowanie części kodu:

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

Spróbuj innej przeglądarki.

+0

Parametr/before nazwa_pliku powoduje, że używa on katalogu głównego, który nie działa. (Przechodzi do http: //localhost/ValidateApplication.php zamiast http: //localhost/Scope%20Website/ValidateApplication.php, gdzie jest plik). –

+0

Zmiana na GET działa, ale powoduje błąd 500 Wewnętrzny błąd serwera –

+0

Komentowanie tych linii powoduje błąd Iluluj Inwokację –

2

miałem ten sam problem i po 2 godzinach szukający co było przyczyną 404 Not Found Błąd I okazało się, że została niedawno gra z header() z PHP i zapomniał usunąć następujący wiersz kodu :

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

Po usunięciu moje funkcje Ajax znów stały się normalne.

+1

Spędziłem 4 godziny przed znalezieniem twojego postu. Dzięki! –