Partage
  • Partager sur Facebook
  • Partager sur Twitter

Soumission automatique de formulaire PHP et Ajax

    19 juillet 2019 à 16:10:04

    Bonjour,

    J'utilise pour la première fois Ajax en vue de sauvegarder automatiquement un formulaire.

    Je ne comprends pas pourquoi mon fichier cible n'est pas appelé et je ne sais pas comment traiter les données transmises.

    EDIT: Remarque importante: Le code JavaScript m'a été donné par un expert chevronné (que je n'arrive plus à joindre). Il diffère du cours de Sébastien et Johann sur ce site par le troisième paramètre de la méthode open imposant une méthode synchrone.

    Code PHP appelant:

    $strPostData	= '';
    foreach($_POST as $key=>$value)
    {
    	$strPostData .= urlencode($key) . '=' . urlencode($value) . '&';
    }
    $strPostData = json_encode(trim($strPostData, '&'));
    

    Code JavaScript:

    	window.addEventListener("unload", function () {
    
    		const req = new XMLHttpRequest();
    	
    		req.open(
    			"POST",
    			"<?= URL_SITE; ?>frontend/controllers/cardFrameHandle.php",
    			false
    		);
     
    		req.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
    	
    		console.log(strPostData);
     
    		// envoi
    		req.send(strPostData);
    	});
    

    Code PHP cible de traitement (dans son état embryonnaire):

    <?php
    
    var_dump($_POST);echo '<br/>';
    var_dump($_SESSION['displCard']['post']['beforeDisplay']);echo '<br/>';
    exit;
    

    Le code JavaScript est correctement appelé et la ligne 13 JS renvoie bien la chaîne correcte. Par contre le fichier cible n'est pas appelé et je ne vois pas pourquoi.


    -
    Edité par jsuis 19 juillet 2019 à 17:49:14

    • Partager sur Facebook
    • Partager sur Twitter
      20 juillet 2019 à 13:34:49

      Bonjour.

      Il y a comme un os dans ton code là.

      Dans le premier bloc tu définies la variable strPostDate qui est donc une variable PHP, mais dans le second, tu utiliserais cette variable comme si c'était une variable JavaScript ?

      Et puis, si tu ne vérifies à aucun moment le statut de la requête et donc quand elle reçoit une réponse, comment pourrais tu récupérer un quelconque retour de données ?

      -
      Edité par Lartak 20 juillet 2019 à 13:39:25

      • Partager sur Facebook
      • Partager sur Twitter

      Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

        20 juillet 2019 à 19:02:51

        Ah désolé, pour le premier point, j'ai oublié de donner mon code html:
        <script src="<?= URL_SITE; ?>frontend/js/cardFrame.js"></script>
        <script>
        	const strPostData	= <?= $strPostData; ?>;
        	const targetFile	= <?= $targetFile; ?>;
        </script>
        
        Pour la vérification, du statut, je pensais que ce n'était pas obligatoire avec une requête synchrone. Ensuite je ne sais pas où il faut mettre cette vérification et comment la faire puisque le cours auquel j'ai fait référence ne parle que des requêtes asynchrones. Y a t-il une différence de traitement des vérifications. J'ai un peu de mal à me représenter la chronologie des événements.
        • Partager sur Facebook
        • Partager sur Twitter

        Soumission automatique de formulaire PHP et Ajax

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown