2012-09-23 27 views
5

टीएल भेजने के लिए; डीआर समाधान: किसी भी रेडियो इनपुट के लिए जावास्क्रिप्ट में .val को बदलने के लिए .val बदलें।AJAX का उपयोग करके रेडियो बटन के साथ PHP मेलर फॉर्म

मैं एक फॉर्म बनाने के लिए this tutorial का उपयोग कर रहा हूं, जब सबमिट बटन दबाया जाता है, तो बटन को "धन्यवाद" संदेश में बटन और fades बाहर निकाल देता है और पृष्ठभूमि में mailer.php भेजता है। मेरे रूप में रेडियो बटन हैं और मुझे लगता है कि जावास्क्रिप्ट को कैसे प्राप्त करना है यह जानने के लिए कि मेरे ईमेल के माध्यम से कौन सा बटन चुना गया था।

<form action="" method="" name="rsvp" id="rsvp-form"> 
<fieldset> 
       <legend>RSVP</legend> 

        <ol> 
         <li> 
          <input id="accepts1" class="rsvps" name="rsvps" type="radio" value="Graciously_Accepts" /> 
          <label for="accepts1">Graciously Accepts</label> 
         </li> 
         <li> 
          <input id="declines1" class="rsvps" name="rsvps" type="radio" value="Regretfully_Declines" /> 
          <label for="declines1">Regretfully Declines</label> 
         </li> 
         <li> 
          <input id="accepts2" class="rsvps" name="rsvps" type="radio" value="Regretfully_Accepts" /> 
          <label for="accepts2">Regretfully Accepts</label> 
         </li> 
         <li> 
          <input id="declines2" class="rsvps" name="rsvps" type="radio" value="Graciously_Declines" /> 
          <label for="declines2">Graciously Declines</label> 
         </li> 
        </ol> 
      </fieldset> 
<div id="rsvp-wrapper"> 
    <fieldset> 
    <button class="button" type="submit" value="send">RSVP!</button> 
</fieldset> 

</form> 
<div class="success"></div> 
</div> 

जावास्क्रिप्ट:

<script type="text/javascript"> 

$(function() { 

$(".button").click(function() { 

var rsvps = $(".rsvps").val(); 

var dataString = 'rsvps=' + rsvps; 

    $.ajax({ 
     type: "POST", 
     url: "rsvp-mailer.php", 
     data: dataString, 
     success: function() { 
     $('#rsvp-wrapper').html("<div class='success'></div>"); 
     $('.success').html("<p class='italic'>Thanks!</p>") 
     .hide() 
     .fadeIn(500, function() { 
      $('.success'); 
     }); 
     } 
    }); 
    return false; 
}); 
}); 

</script> 

और mailer.php:

<?php 

$rsvps = $_POST['rsvps']; 

$formcontent=" 

RSVP: $rsvps \n"; 

$recipient = "[email protected]"; 

$subject = "RSVP"; 

$mailheader = "RSVP \r\n"; 

mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 

?> 

आप किसी भी अंतर्दृष्टि प्रदान कर सकते हैं के लिए बहुत बहुत धन्यवाद

यहाँ प्रपत्र एचटीएमएल है।

उत्तर

4

इस आज़मा कर देखें। अधिक जानकारी के लिए jQuery.post() देखें।

<script type="text/javascript"> 
    $('form').submit(function() { 
     var data = $(this).serialize(); 

     $.post("rsvp-mailer.php", data, function() { 
      $('#rsvp-wrapper').html("<div class='success'></div>"); 
      $('.success').html("<p class='italic'>Thanks!</p>") 
      .hide() 
      .fadeIn(500, function() { 
       $('.success'); 
      }); 
     } 

    return false; 
    } 
</script> 
+0

हां !, यह सभी फॉर्म को क्रम में भेजने का सबसे अच्छा तरीका है और बाद में आप किसी अन्य तत्व पर किसी भी तत्व का नाम कॉल करते हैं .. और परिणाम को प्रदर्शित करते हुए दिखाएं .. उम्मीद है कि यह आपके लिए अच्छा काम करेगा। – Rafee

+0

यह सही डेटा लौटा रहा है, लेकिन पृष्ठ के यूआरएल में, ईमेल नहीं। ई.जी: डोमेन.com/?rsvps=Regretfully_Declines –

+0

काम करने के लिए .val को बदलने के लिए बदलता है। एकमात्र छोटी समस्या यह है कि ईमेल में यह कहता है कि 'आरएसवीपी: आरएसवीपीएस = रेग्रेरेटेडेक्लेन्स' आपकी मदद के लिए धन्यवाद! –

1

बल्कि एक वर्ग चयनकर्ता के माध्यम से रेडियो बटन तक पहुँचने से, निम्न प्रयास करें:

var rsvps = $('input[name=rsvps]:radio').val(); 
+0

जब मैं ऐसा करता हूं तो यह मुझे प्रतिक्रिया के रूप में पहला रेडियो बटन भेजता है, भले ही एक और रेडियो चुना गया हो। –

+0

असल में अपना स्निपेट लेना और बदलना .val से .serialize काम किया। एकमात्र छोटी समस्या यह है कि ईमेल में यह कहता है कि 'आरएसवीपी: आरएसवीपीएस = रेग्रेरेटेडेक्लेन्स' आपकी मदद के लिए धन्यवाद! –

0

आपको ईमेल पर भेजे जाने के लिए मूल्य प्राप्त करने के लिए जावास्क्रिप्ट की आवश्यकता नहीं है। इसके बजाय PHP का प्रयोग करें।

$formcontent .= $_POST['rsvp']; 

उस लाइन को $ प्राप्तकर्ता को रेडियो बटन के मूल्य को भेजने से पहले जोड़ा जाएगा।

0

परिवर्तन var rsvps = $(".rsvps").val();var rsvps = $(".rsvps[selected=selected]").val(); को

इसके अलावा, dataString इस var dataString = { rsvps : rsvps }; की तरह एक json वस्तु ajax पोस्ट के माध्यम से सुलभ होने के लिए की जरूरत है।

+0

वापस "अपरिभाषित" के रूप में आता है ... –