Maison  >  Article  >  développement back-end  >  Pourquoi les données de mon formulaire sérialisé jQuery n'atteignent-elles pas le serveur PHP ?

Pourquoi les données de mon formulaire sérialisé jQuery n'atteignent-elles pas le serveur PHP ?

DDD
DDDoriginal
2024-11-02 16:43:02166parcourir

Why is my jQuery serialized form data not reaching the PHP server?

Sérialisation et soumission d'un formulaire avec jQuery et PHP

Problème : Malgré la sérialisation des données du formulaire à l'aide de jQuery, les données sont n'atteint pas le serveur.

Formulaire HTML :

<code class="html"><form id="contactForm" name="contactForm" method="post">
    <input type="text" name="nume" size="40" placeholder="Nume">
    <input type="text" name="telefon" size="40" placeholder="Telefon">
    <input type="text" name="email" size="40" placeholder="Email">
    <textarea name="comentarii" cols="36" rows="5" placeholder="Message"></textarea>
    <input id="submitBtn" type="submit" name="submit" value="Trimite">
</form></code>

JavaScript :

<code class="javascript">$("#contactForm").submit(function(e) {
    e.preventDefault(); // Prevent browser submission
    $.post("getcontact.php", $("#contactForm").serialize())
    .done(function(data) {
        // Process server response
    });
});</code>

Serveur -Côté PHP (getcontact.php) :

<code class="php">$nume = $_POST["nume"];
$email = $_POST["email"];
$telefon = $_POST["telefon"];
$comentarii = $_POST["comentarii"];</code>

Résolution du problème :

Le problème provient de l'utilisation de l'option de méthode de transport dans $.post( ) (obsolète dans jQuery 3.0). Utilisez plutôt $.ajax() avec les paramètres suivants :

<code class="javascript">$.ajax({
    type: "POST",
    url: "getcontact.php",
    data: $("#contactForm").serialize(),
    dataType: "json",
    success: function(data) {
        // Process server response
    },
    error: function() {
        // Handle errors
    }
});</code>

Dans ce code mis à jour :

  • $.preventDefault() empêche le navigateur de soumettre le formulaire.
  • le transport est omis, permettant à jQuery de choisir la meilleure méthode.
  • dataType est défini sur "json" pour interpréter la réponse du serveur comme JSON.
  • les rappels de réussite et d'erreur gèrent le serveur réponses et erreurs, respectivement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn