2014-06-23 21 views
6

Utilizzo Ajax per passare i dati del modulo e i file in un file PHP per l'elaborazione.Jquery ajax restituisce 404 non trovato

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 esiste sicuramente. Posso visualizzarlo inserendo il modulo nel browser web, tuttavia quando invio il modulo chrome console restituisce 404.

Il PHP si trova nella stessa cartella della pagina HTML su cui è in esecuzione JavaScript, quindi sono confuso il motivo per cui continuo a ricevere un 404.

UPDATE

Modifica POST a GET si libera l'errore 404, ma restituisce un errore 500 Internal Server

UPDATE 2

Cambiare l'azione di la forma a = "Vali dateApplication.php "e inviarlo normalmente (senza AJAX) porta al file corretto senza errori.

+0

struttura della cartella – mithunsatheesh

+6

corretta è corretta? Alcuni sistemi operativi/server Web trattano diversamente le maiuscole. (Ad esempio, 'ValidateApplication.php' non è lo stesso di' validateapplication.php', né 'Validateapplication.php') – esqew

+0

Qual è l'URL completo nel browser Web che funziona? E hai provato a impostare l'URL completo e non solo il 'ValidateApplication.php' come hai postato? – JakeGould

risposta

2

Sembrava un problema con l'oggetto FormData. Una volta ho cambiato il mio metodo per utilizzare .serialize() invece, la pagina ha funzionato bene.

$("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

Sei sicuro di averlo scritto correttamente? Il risultato dell'applicazione di 'serialize' non è qualcosa che ha il metodo' append'! – Alexander

0

provare ad aggiungere un/prima che il nome del file: url: '/ValidateApplication.php',

provare a cambiare il tipo di richiesta da POST a GET e vedere se funziona.

a commentare la parti del codice:

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

Prova un altro browser.

+0

Il nome/prima del nome del file lo utilizza utilizzando la directory radice che non funziona. (Va a http: //localhost/ValidateApplication.php invece di http: //localhost/Scope%20Website/ValidateApplication.php che è dove si trova il file). –

+0

Cambiarlo in GET funziona ma genera Errore 500 Errore interno server –

+0

Commentando le righe fuori causa Errore di chiamata non valida –

2

Ho avuto lo stesso problema e dopo 2 ore alla ricerca di quello che è stato causa l'errore 404 Not Found ho scoperto che mi è stato di recente giocando con il header() da PHP e avevo dimenticato di cancellare la seguente riga di codice :

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

Dopo averlo eliminato, le funzioni di Ajax sono tornate normali.

+1

Avevo trascorso 4 ore prima di trovare il tuo post. Grazie! –

Problemi correlati