web-dev-qa-db-fra.com

Jquery ajax rentrant 404 non trouvé

J'utilise Ajax pour transmettre mes données de formulaire et mes fichiers à un fichier PHP à des fins de traitement.

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 existe définitivement. Je peux l'afficher si je tape l'adresse dans le navigateur Web. Toutefois, lorsque je soumets le formulaire, la console chrome renvoie 404.

Le PHP se trouve dans le même dossier que la page HTML sur laquelle JavaScript s'exécute. Je ne comprends donc pas pourquoi je continue à obtenir un 404.

METTRE À JOUR

La modification de POST en GET supprime l'erreur 404 mais renvoie une erreur de 500 serveur interne.

MISE À JOUR 2

Changer l'action du formulaire en = "ValidateApplication.php" et le soumettre normalement (sans AJAX) conduit au fichier correct sans erreur. 

6
Ashwin Sekar

Cela semblait être un problème avec l'objet FormData. Une fois que j'ai changé ma méthode pour utiliser .serialize() à la place, la page a bien fonctionné.

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

J'ai eu le même problème et après 2 heures à chercher la cause de l'erreur 404 Introuvable, j'ai constaté que je jouais récemment avec la header() de PHP et que j'avais oublié de supprimer la ligne de code suivante: 

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

Après l'avoir supprimée, mes fonctions Ajax sont redevenues normales.

3
CIRCLE

Pour moi, c’est que j’ai utilisé un champ de saisie avec name="name" qui a renvoyé la page appelée à 404. Étrange chose, espérons que cela aidera quelqu'un.

2
Tom Walter

Veuillez valider que vous avez correctement fourni l'attribut name = "" sous la forme Valider l'attribut de tous les beans à partir de l'attribut name de l'entrée

0

Essayez d’ajouter un/avant le nom du fichier: Url: '/ValidateApplication.php',

Essayez de changer le type de demande de POST en GET et voyez si cela fonctionne.

Essayez de commenter certaines parties du code:

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

Essayez un autre navigateur.

0
Greg K