2009-12-03 7 views
0

J'utilise le plugin jQuery Form pour envoyer des requêtes AJAX. C'est un simple contact d'utiliser ce script PHP: http://pastie.org/725652 - la seule validation qui se passe à l'intérieur du PHP.Formulaire de contact en utilisant le plugin de formulaire PHP et jQuery

Voici mon code Javascript pour déclencher la chose:

$('#contactform').ajaxForm({ 
    target: '#error', 
    beforeSubmit: function() { 
     $('#error').append('<p class="loading">Sending your message...</p>'); 
    }, 
    success: function() { 
     $('#error p.loading').fadeOut(); 
     $('#error').fadeIn('slow'); 
    } 
}); 

Malheureusement, il ne semble pas fonctionner. Le PHP fonctionne parfaitement, envoie l'email et renvoie le message de succès, mais la magie AJAX ne fonctionne pas pour une raison quelconque. Évidemment ce que je veux réaliser, est d'afficher le message retourné par le script PHP via AJAX dans le <div id="error />

J'ai utilisé le même script plusieurs fois et je n'ai jamais eu de problème avec ça, maintenant je n'arrive pas à comprendre pourquoi ne fonctionne pas. Voici le balisage pour le formulaire de contact.

<form id="contactform" class="group" method="post" action="submitemail.php"> 
    <fieldset> 
     <div><label for="first-name">First Name</label> 
     <input type="text" name="first-name" value="Jeremy" /></div> 

     <div class="alt"><label for="last-name">Last Name</label> 
     <input type="text" name="last-name" value="Anderson" /></div> 

     <div><label for="email">E-mail <span>(never published)</span></label> 
     <input type="text" name="email" value="[email protected]" /></div> 

     <div class="alt"><label for="url">Website</label> 
     <input type="text" name="url" value="http://www.mywebsite.com" /></div> 

     <label for="question">Message</label> 
     <textarea name="question" id="" cols="30" rows="10">Thinking of something to say...</textarea> 

     <input type="submit" name="submit" id="submit" value="Send E-mail" /> 
     <div id="error"></div> 
    </fieldset> 
</form> 

Voici le code du plugin jQuery s'il peut être utile. http://pastie.org/726175

Si quelqu'un pouvait regarder le tout et donner quelques conseils pourquoi cela ne fonctionnerait pas, je serais très reconnaissant, merci d'avance!

+0

Je commence à penser que c'est juste une simple faute de frappe quelque part, mais je copie/colle habituellement tous les scripts des projets précédents. Regardé à travers cela une douzaine de fois et ne peut toujours pas le voir ... – Justine

Répondre

1

vous devez inclure les paramètres qui sont la réponse de PHP:

EDIT:

essayer avec ces changements, dans cet exemple, je suis séparer le message « chargement » avec le message de réponse.

HTML:

<form id="contactform" class="group" method="post" action="submitemail.php"> 
    <fieldset> 
     <!-- fields --> 

     <input type="submit" name="submit" id="submit" value="Send E-mail" /> 
     <div id="error"><span id="eloading"></span><span id="eresponse"></span></div> 
    </fieldset> 
</form> 

Javascript:

$('#contactform').ajaxForm({ 
    target: '#eresponse', 
    beforeSubmit: function() { 
     $('#eresponse').hide('slow'); 
     $("#eloading").append("<p class=\"loading\">Sending your message...</p>"); 
    }, 
    success: function(responseText, statusText) { 

     alert("test status: " + statusText + "\n\nresponseText: \n" + responseText); 
     $("#eloading").empty(); 
     $('#eresponse').show('slow'); 
    } 
}); 
+0

Il n'a pas fait l'affaire :( Il va toujours au fichier submitemail.php avec le message de réussite au lieu de montrer le message dans #error. – Justine

0

Il n'a pas fait l'affaire :(Il va encore au fichier submitemail.php avec le message de réussite au lieu de montrant le message dans #error - Justine 39 il ya

Si cela se produit cela signifie que la fonction attachée à la soumettre événement na pas se terminer par

return false; 

i beleive avec ajaxForm cela est fait automagiquement si cela signifie qu'il ya une erreur dans votre code quelque part. Si vous n'avez pas Firebug installé, l'installer et de garder un oeil sur la console assurez-vous que:

  1. jquery chargement ok
  2. il n'y a pas errrors mise en place de l'interaction ajax ou dans toute autre js sur La page qui peut l'arrêter
Questions connexes