8722 sujets

Développement web côté serveur, CMS

Bonjour à vous,

J'ai un souci avec mon formulaire ajax.
De base j'utilisais .post de jQuery pour envoyer mon formulaire qui fonctionnait sans problème, mais j'ai dû ajouter un input de type file, du coup j'ai basculé sur la méthode .ajax.

J'ai suivi le post de fabriceb (ici) pour mettre en place , mais j'ai une chose étrange qui se passe.
Mes valeurs de mon formulaire sont envoyées, mais elles ne s'affiche pas quand je fais un echo du $_POST.

Voici mon code.
Le script JS avec l'ajax

$('#form_demande').submit(function(){
            $('#f_nom_service').val($('.icone_service_active').attr('alt'));
            $('#popup').show();

            
            var myformData = new FormData($(this)[0]);

            $.ajax({
                type : 'POST',
                enctype: 'multipart/form-data',
                url : 'traitement/ajax_envoi_demande.php',
                data : myformData,
                processData : false,
                contentType : false ,
                cache : false,
                success:function(data){
                    Placeholder();
                    $('#info').html("SUCCESS : " + data);//Insertion des infos de retour dans la div info
                }
            });
            
            return false;//On bloquer l'envoi du formulaire submit de base
        })


La page PHP de traitement
<?php 
echo "La demande".$_POST["f_demande"];
?>


La console de Firefox m'affiche bien les valeurs en paramètres.
-----------------------------423057378826317650311930055206
Content-Disposition: form-data; name="f_site"

1
-----------------------------423057378826317650311930055206
Content-Disposition: form-data; name="f_service"

1
-----------------------------423057378826317650311930055206
Content-Disposition: form-data; name="f_demande"

test
-----------------------------423057378826317650311930055206
Content-Disposition: form-data; name="f_pj"; filename=""
Content-Type: application/octet-stream


-----------------------------423057378826317650311930055206
Content-Disposition: form-data; name="f_email"

test


Et en réponse je n'ai que "La demande"

Mon formulaire est celui que j'utilisais avant, j'ai juste ajouté l'enctype
<form id='form_demande' action='#' method='POST' enctype="multipart/form-data">


Ca fait 2h que je fouille sur le web, mais tout me semble ok dans mon code.
Du coup je me dis qu'un autre regard pourrait trouver l'erreur.

Merci d'avance.
Modifié par WyLLoU (22 Apr 2020 - 14:53)
Je viens de faire un test en ajouter manuellement une valeur , mais ça fait le même résultat
myformData.append("test","coucou test");

J'ai fait un echo $_POST['test'] et je n'ai toujours que "La demande" qui s'affiche au lieu de "La demande coucou test".
Bon, je suis tombé sur un forum de quelqu'un qui a testé en changeant sa version de jQuery.
Et bin.... je suis passé de la 1.4 à la 3.5, et bin ça fonctionne.

Du coup je laisse ce post pour ceux qui comme moi chercheront le pourquoi du comment.
Bonne journée.
Meilleure solution