web-dev-qa-db-fra.com

comment écrire du code javascript dans php

j'ai un formulaire, en cliquant sur le bouton "soumettre":

  1. Je veux faire une tâche dans le même fichier (tâche db) ET
  2. Je veux que les données du formulaire soient envoyées à test.php avec la redirection

voici mon code

    <?php
    if(isset($_POST['btn'])){
        //do some task
    ?>
    <script type="text/javascript">
        var e = document.getElementById('testForm'); e.action='test.php'; e.submit();</script>
    <?php
    }
    ?>
<form name="testForm" id="testForm"  method="POST"  >
    <input type="submit" name="btn" value="submit" autofocus  onclick="return true;"/>
 </form>

mais pas capable de soumettre le formulaire, si j'appelle le code javascript sur onClick, ça marche. quel est le problème dans ce code, y a-t-il un travail autour pour ceci

32
n92

Rappelez le javascript dans la fonction if

 <form name="testForm" id="testForm"  method="POST"  >
     <input type="submit" name="btn" value="submit" autofocus  onclick="return true;"/>
 </form>
 <?php
    if(isset($_POST['btn'])){
        echo "
            <script type=\"text/javascript\">
            var e = document.getElementById('testForm'); e.action='test.php'; e.submit();
            </script>
        ";
     }
  ?>
57
keto23

Vous pouvez mettre tout votre JS comme ça, pour qu'il ne s'exécute pas avant que votre HTML ne soit prêt

$(document).ready(function() {
   // some code here
 });

Rappelez-vous que c'est jQuery alors incluez-le dans la section head. Voir aussi Pourquoi utiliser jQuery et non onload

6
nischayn22

Au moment de l'exécution du script, le bouton n'existe pas car le DOM n'est pas complètement chargé. La solution la plus simple serait de mettre le bloc de script après le formulaire.

Une autre solution serait de capturer le window.onload événement ou utilisez la bibliothèque jQuery (saturation si vous n’avez que celui-ci JavaScript).

4
chiborg