2012-07-10 2 views
0

J'ai reçu mon formulaire de soumission via PHP mais je me bats un peu avec l'AJAX. Lors de la soumission, l'erreur apparaît toujours comme si res est défini sur false plutôt que sur true. J'ai essayé de jouer avec le code et de chercher ma propre réponse parce que je veux apprendre, mais je ne trouve pas ce dont j'ai besoin.AJAX Formulaire de contact - Succès et Echec Message

Pouvez-vous me diriger dans la bonne direction pour ce que j'ai mal fait?

Merci beaucoup!

Le code pour votre référence:

$('#contact_form').submit(function() { 

    var this_form = $(this); 
    $.ajax({ 
     type: 'post', 
     data: this_form.serialize(), 
     url: 'scripts/send_email.php', 
     success: function(res) { 
      if(res == "true") { 
       $(this_form)[0].reset(); 
       $(".notice").removeClass("error").text("Thank you for contacting us!").addClass("success").fadeIn("fast"); 
      } else { 
       $(".notice").text("Please check all fields and try again.").addClass("error").fadeIn("fast"); 
      } 
     } 
    }); 

}); 

Répondre

0

essayer de demander:

if(res == true) 

à la place. Aussi une bonne façon d'éviter ce genre de problèmes est de déboguer votre javascript via Firebug ou le débogueur de chrome, si vous utilisez Chrome, vous pouvez ajouter cette ligne à votre code:

debugger; 
if(res == "true") 

et le javascript arrête là donc vous pouvez inspecter la variable et voir ce qui se passe. vous pouvez l'ouvrir en allant dans "options -> outils -> outils de développement -> scripts".

Hope this helps :)

+0

Merci beaucoup! –

+0

pas de problème et bienvenue à SO :) – Hassek

0

Il semble que votre comparaison de la vérité est de retour faux en raison de la valeur que représente res. Vous vérifiez que c'est une chaîne avec la valeur "true". Sinon, déclenchez le code else.

Votre propriété success ne sera exécutée que si la transmission AJAX a réussi. Vous souhaiterez définir le contrôle de comparaison sur la sortie désirée de send_email.php, c'est-à-dire "Succès!" ou "Échec!" pour indiquer la bonne manipulation.

succès (données, textStatus, jqXHR)

Une fonction à appeler si la demande réussit. La fonction passe trois arguments : Les données renvoyées par le serveur, formatées selon le paramètre dataType; une chaîne décrivant le statut; et l'objet jqXHR (dans jQuery 1.4.x, XMLHttpRequest). À partir de jQuery 1.5, le paramètre de réussite peut accepter un ensemble de fonctions. Chaque fonction sera appelée à tour de rôle.

Voir docs pour plus d'informations sur la gestion des requêtes AJAX dans jQuery.

success: function(res) { 
    if (res == "Success!") { 
     $(this_form)[0].reset(); 
     $(".notice").removeClass("error").text("Thank you for contacting us!").addClass("success").fadeIn("fast"); 
    } else { 
     $(".notice").text("Please check all fields and try again.").addClass("error").fadeIn("fast"); 
    } 
} 
+0

Merci beaucoup! –

+0

De rien. Faites-moi savoir si vous avez besoin d'aide supplémentaire/explication avec ce problème. – RobB

0

Dans votre fichier send_email.php, echo "" si elle réussit.

Modifiez ensuite votre appel AJAX comme ceci:

success: function(data) { 
if (data == "success") {do stuff} else {do failure stuff} 
} 
Questions connexes