2010-11-11 27 views
1
var text = $("input#text").val(); 
    if (text == "") { 
      $("input#text").focus(); 
      alert("Please complete all fields"); 
      return false; 
    } 

J'ai cette jquery ci-dessus pour valider une zone de texte appelée "texte". Ceci, avec d'autres valeurs, .ajax envoyé à une page php pour l'envoi d'un e-mail. L'e-mail est correct avec tout le reste, mais la zone de texte est "indéfinie"? Des idées? Dois-je poster un peu plus de code?le type d'entrée textarea arrivant à envoyer comme "undefined" de php mail

EDIT:

Reste du code:

php:

     $email = $_REQUEST['email'] ; 
         $text = $_REQUEST['text'] ; 
         $name = $_REQUEST['name'] ; 
         $detail = "Name: ".$name."\nMessage: ".$text; 
         mail("xxxxxxxxx", "Subject: Contact Form", 
         $detail, "From: $email"); 
         echo "Thank you for getting in touch"; 

jquery complet:

$(function() { 

$ ('# submit') vivent (». cliquez sur ', fonction() {

var name = $("input#name").val(); 
    if (name == "") { 
      $("input#name").focus(); 
      alert("Please complete all fields"); 
      return false; 
    } 

    var email = $("input#email").val(); 
    if (email == "") { 
      $("input#email").focus(); 
      alert("Please complete all fields"); 
      return false; 
    } 

    var text = $("input#text").val(); 
    if (text == "") { 
      $("input#text").focus(); 
      alert("Please complete all fields"); 
      return false; 
    } 

    var dataString = 'name=' + name + '&email=' + email + '&text=' + text; 
    //alert (dataString);return false; 

    $.ajax({ 
    type: "POST", 
    url: "mailform.php", 
    data: dataString, 
    success: function() { 
    alert("Thanks, we will be in touch soon"); 
    } 
}); 
return false; 
}); 

});

Le html:

<form method='post' action='mailform.php' class="form"> 

       <p class="name"> 
       <label for="name">Name</label> 
        <input type="text" name="name" id="name" />  
       </p> 

       <p class="email"> 
        <label for="email">E-mail</label> 
        <input type="text" name="email" id="email" />    
       </p> 

       <p class="text"> 
        <label for="text">Nature of Enquiry</label> 
        <textarea id="text" name="text"></textarea> 
       </p> 

       <p class="submit"> 
        <input type="submit" id="submit" value="Send" /> 
       </p> 

      </form> 
+0

Pouvez-vous ajouter les lignes javascript où vous envoyez la demande? Jusqu'à présent, tout semble ok. – arby

Répondre

1

J'ai eu un problème similaire et mon problème était avec le code php. Essayez de regarder ici pour voir si le #textarea obtient _POST - ed correctement.

J'utilise cela et fonctionne parfaitement pour moi:

//we need to get our variables first 

$email_to = 'xxxx[email protected]'; //the address to which the email will be sent 
$name  = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']. "\n\n"; 

/*the $header variable is for the additional headers in the mail function, 
we are asigning 2 values, first one is FROM and the second one is REPLY-TO. 
That way when we want to reply the email gmail(or yahoo or hotmail...) will know 
who are we replying to. */ 
$headers = "From: $email\r\n"; 
$headers .= "Reply-To: $email\r\n"; 

if(mail($email_to, $subject, $message, $headers)){ 
    echo 'sent'; // we are sending this text to the ajax request telling it that the mail is sent..  
}else{ 
    echo 'failed';// ... or this one to tell it that it wasn't sent  
} 

Je ne sais pas ce qui se passe, comme l'autre utilisateur dit que je crois être un problème avec la façon dont les données sont reportées au php scénario.

Essayez de regarder dans $.post et serialize() fonctions jquery peut offrir:

pour vous donner une idée:

var error = false; 
    var name = $('#name').val(); 
    var email = $('#email').val(); 
    var subject = $('#subject').val(); 
    var message = $('#message').val(); 

--- En raison des contrôles pour voir si l'info est correcte ---

if(error == false){ 
     //#contact_form has all the variables that get serialized and sent to the php 
      and you can get a message back to check if everything went okay. 
     $.post("your_php_code.php", $("#contact_form").serialize(),function(result){ 
      //and after the ajax request ends we check the text returned 
      if(result == 'sent'){ 
       //if the mail is sent remove the submit paragraph 
       $('#cf_submit_p').remove(); 
       //and show the mail success div with fadeIn 
       $('#mail_success').fadeIn(500); 
      }else{ 
       //show the mail failed div 
       $('#mail_fail').fadeIn(500); 
       $('#send_message').removeAttr('disabled').attr('value', 'Send The Message'); 
      } 
     }); 
+0

merci, dans Firebug, le "texte" est "indéfini" dans le post !? – benhowdle89

+0

J'ai ajouté un peu plus de code que j'utilise avec un formulaire de contact. Vous ne savez pas quoi dire sur le problème avec votre code. – Chris19

+0

Et qu'imprime "" montrer? – symcbean