116 votes

Soumettre un formulaire HTML en utilisant Jquery AJAX

J'essaie de soumettre un formulaire HTML en utilisant AJAX en utilisant cet exemple .

Mon code HTML :

<form id="formoid" action="studentFormInsert.php" title="" method="post">
    <div>
        <label class="title">First Name</label>
        <input type="text" id="name" name="name" >
    </div>
    <div>
        <label class="title">Name</label>
        <input type="text" id="name2" name="name2" >
    </div>
    <div>
        <input type="submit" id="submitButton"  name="submitButton" value="Submit">
    </div>
</form>

Mon script :

<script type="text/javascript">
    $(document).ready(function() { 
        $('#formoid').ajaxForm(function() { 
            alert("Thank you for your comment!"); 
        }); 
    });
</script>

Cela ne fonctionne pas, je ne reçois même pas le message d'alerte. et quand je soumets, je ne veux pas rediriger vers une autre page, je veux juste afficher le message d'alerte.

Existe-t-il un moyen simple de le faire ?

PS : J'ai plusieurs champs, je n'en ai mis que deux à titre d'exemple.

200voto

abc123 Points 3550

Description rapide d'AJAX

AJAX est simplement JSON ou XML asynchrone (dans la plupart des situations récentes, JSON). Parce que nous effectuons une tâche ASYNC, nous fournirons probablement à nos utilisateurs une expérience d'interface utilisateur plus agréable. Dans ce cas précis, nous soumettons un formulaire en utilisant AJAX.

Très rapidement, il y a 4 actions générales sur le web GET , POST , PUT y DELETE ; ceux-ci correspondent directement à SELECT/Retreiving DATA , INSERTING DATA , UPDATING/UPSERTING DATA y DELETING DATA . Un formulaire web HTML/ASP.Net/PHP/Python ou autre par défaut form est "submit", qui est une action POST. Pour cette raison, les paragraphes ci-dessous décrivent tous une action POST. Parfois cependant, avec http, vous pouvez vouloir une action différente et vous voudrez probablement utiliser .ajax .

Mon code spécialement pour vous (décrit dans les commentaires du code) :

/* attach a submit handler to the form */
$("#formoid").submit(function(event) {

  /* stop form from submitting normally */
  event.preventDefault();

  /* get the action attribute from the <form action=""> element */
  var $form = $(this),
    url = $form.attr('action');

  /* Send the data using post with element id name and name2*/
  var posting = $.post(url, {
    name: $('#name').val(),
    name2: $('#name2').val()
  });

  /* Alerts the results */
  posting.done(function(data) {
    $('#result').text('success');
  });
  posting.fail(function() {
    $('#result').text('failed');
  });
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form id="formoid" action="studentFormInsert.php" title="" method="post">
  <div>
    <label class="title">First Name</label>
    <input type="text" id="name" name="name">
  </div>
  <div>
    <label class="title">Last Name</label>
    <input type="text" id="name2" name="name2">
  </div>
  <div>
    <input type="submit" id="submitButton" name="submitButton" value="Submit">
  </div>
</form>

<div id="result"></div>

Documentation

Extrait du site web de jQuery $.post documentation.

Exemple : Envoyer des données de formulaire en utilisant des requêtes ajax

$.post("test.php", $("#testform").serialize());

Exemple : Poster un formulaire en utilisant ajax et mettre les résultats dans un div

<!DOCTYPE html>
<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    </head>
    <body>
        <form action="/" id="searchForm">
            <input type="text" name="s" placeholder="Search..." />
            <input type="submit" value="Search" />
        </form>
        <!-- the result of the search will be rendered inside this div -->
        <div id="result"></div>
        <script>
            /* attach a submit handler to the form */
            $("#searchForm").submit(function(event) {

                /* stop form from submitting normally */
                event.preventDefault();

                /* get some values from elements on the page: */
                var $form = $(this),
                    term = $form.find('input[name="s"]').val(),
                    url = $form.attr('action');

                /* Send the data using post */
                var posting = $.post(url, {
                    s: term
                });

                /* Put the results in a div */
                posting.done(function(data) {
                    var content = $(data).find('#content');
                    $("#result").empty().append(content);
                });
            });
        </script>
    </body>
</html>

Note importante

Si vous n'utilisez pas OAuth ou au moins HTTPS (TLS/SSL), n'utilisez pas cette méthode pour les données sécurisées (numéros de carte de crédit, SSN, tout ce qui est lié à PCI, HIPAA ou à la connexion).

29voto

Varun S Points 67
var postData = "text";
      $.ajax({
            type: "post",
            url: "url",
            data: postData,
            contentType: "application/x-www-form-urlencoded",
            success: function(responseData, textStatus, jqXHR) {
                alert("data saved")
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log(errorThrown);
            }
        })

3voto

mzvarik Points 11

Si vous ajoutez :

jquery.form.min.js

Vous pouvez simplement faire cela :

<script>
$('#myform').ajaxForm(function(response) {
  alert(response);
});

// this will register the AJAX for <form id="myform" action="some_url">
// and when you submit the form using <button type="submit"> or $('myform').submit(), then it will send your request and alert response
</script>

NOTA:

Vous pourriez utiliser simplement $('FORM').serialize() comme suggéré dans le post ci-dessus, mais cela ne fonctionnera pas pour ENTRÉES DE FICHIERS ... ajaxForm() le fera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X