2013-03-08 3 views
7

देखने के लिए समय लेने के लिए धन्यवाद। मैं jQuery का उपयोग कर एक सुंदर मूल AJAX संपर्क फ़ॉर्म बना रहा हूँ। ईमेल भेजता है, लेकिन ईमेल खोलने पर कोई पोस्ट डेटा नहीं है, इसलिए मुझे केवल PHP स्क्रिप्ट में परिभाषित तार मिलते हैं। मेरे फोन के ईमेल क्लाइंट पर, ईमेल की सामग्री सचमुच 'अपरिभाषित' कहती है। मैंने बिना किसी लाभ के विभिन्न प्रकार के हेडर डेटा जोड़ने की कोशिश की है, और PHP मेल() फ़ंक्शन पर कई भिन्नताएं हैं।मेल का उपयोग कर jQuery AJAX फॉर्म() PHP स्क्रिप्ट ईमेल भेजता है, लेकिन HTML फॉर्म से पोस्ट डेटा अपरिभाषित

मैं एक साधारण AJAX फ़ॉर्म के लिए एक आसान समाधान अपनाने के इच्छुक हूं, इसलिए किसी भी नए दृष्टिकोण के लिए अग्रिम धन्यवाद।

यहाँ रूप है:

<section id="left"> 
     <label for="form_name">Name</label> 
     <input name="form_name" id="form_name" type="text" > 

     <label for="form_email">Email</label> 
     <input name="form_email" id="form_email" type="email" > 
    </section> 

    <section id="right"> 
     <label for="form_msg">Message</label> 
     <textarea name="form_msg" id="form_msg"></textarea> 
     <input id="submit" class="button" name="submit" type="submit" value="Send"> 
    </section> 

</form> 

jQuery AJAX:

$(function() { 
    $("#contact .button").click(function() { 
     var name = $("#form_name").val(); 
     var email = $("#form_email").val(); 
     var text = $("#msg_text").val(); 
     var dataString = 'name='+ name + '&email=' + email + '&text=' + text; 

     $.ajax({ 
      type: "POST", 
      url: "email.php", 
      data: dataString, 
      success: function(){ 
      $('.success').fadeIn(1000); 
      } 
     }); 

     return false; 
    }); 
}); 

PHP स्क्रिप्ट (बाहरी फ़ाइल 'email.php'):

<?php 
if($_POST){ 
    $name = $_POST['form_name']; 
    $email = $_POST['form_email']; 
    $message = $_POST['form_msg']; 

//send email 
    mail("[email protected]", "This is an email from:" .$email, $message); 
} 
?> 

उत्तर

16

कोई क्वेरी स्ट्रिंग बनाने की आवश्यकता नहीं है। बस अपने मूल्य किसी ऑब्जेक्ट में रखें और jQuery आपके लिए बाकी का ख्याल रखेगा।

var data = { 
    name: $("#form_name").val(), 
    email: $("#form_email").val(), 
    message: $("#msg_text").val() 
}; 
$.ajax({ 
    type: "POST", 
    url: "email.php", 
    data: data, 
    success: function(){ 
     $('.success').fadeIn(1000); 
    } 
}); 
+1

मैंने इसका उपयोग किया और यह अच्छी तरह से काम करता है, कॉम्बो में एमएमसी और गैरीस द्वारा परिभाषित मेरी PHP स्क्रिप्ट को बदलने के साथ। सबको शुक्रीया! –

4

आप ' गलत पोस्ट पैरामीटर का उपयोग कर रहे हैं:

var dataString = 'name='+ name + '&email=' + email + '&text=' + text; 
         ^^^^-$_POST['name'] 
             ^^^^--$_POST['name'] 
             etc.... 

जावास्क्रिप्ट/एचटीएमएल आईडी वास्तविक पोस्ट के लिए अप्रासंगिक हैं, खासकर जब आप अपनी डेटा स्ट्रिंग बना रहे हैं और उन आईडी का उपयोग न करें।

+0

धन्यवाद एक बहुत, डेटा हैश के साथ संयोजन में इस पूरी तरह से काम किया! –

0

आपका PHP स्क्रिप्ट (बाहरी फ़ाइल 'email.php') इस तरह दिखना चाहिए:

<?php 
if($_POST){ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['text']; 

//send email 
    mail("[email protected]", "51 Deep comment from" .$email, $message); 
} 
?> 
+0

बहुत बहुत धन्यवाद, यह डेटा हैश के साथ संयोजन में पूरी तरह से काम किया! –

4

तुम गलत मापदंडों नाम का उपयोग कर रहे हैं, की कोशिश:

if($_POST){ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['text']; 

//send email 
    mail("[email protected]", "51 Deep comment from" .$email, $message); 
} 
+0

बहुत बहुत धन्यवाद, यह डेटा हैश के साथ संयोजन में पूरी तरह से काम किया! –

6

छोड़ दो अपने email.php कोड वही है, लेकिन इस जावास्क्रिप्ट कोड को प्रतिस्थापित करें:

var name = $("#form_name").val(); 
     var email = $("#form_email").val(); 
     var text = $("#msg_text").val(); 
     var dataString = 'name='+ name + '&email=' + email + '&text=' + text; 

     $.ajax({ 
      type: "POST", 
      url: "email.php", 
      data: dataString, 
      success: function(){ 
      $('.success').fadeIn(1000); 
      } 
     }); 

इसके साथ:

$.ajax({ 
     type: "POST", 
     url: "email.php", 
     data: $(form).serialize(), 
     success: function(){ 
     $('.success').fadeIn(1000); 
     } 
    }); 

ताकि आपके फॉर्म इनपुट नाम मिल जाए।

+0

jQuery चयनकर्ता में उद्धरण के तहत प्लेस फॉर्म – FrenchFalcon

1

आप कोड होना चाहिए:

<section id="right"> 
     <label for="form_msg">Message</label> 
     <textarea name="form_msg" id="#msg_text"></textarea> 
     <input id="submit" class="button" name="submit" type="submit" value="Send"> 
    </section> 

जे एस

var data = { 
    name: $("#form_name").val(), 
    email: $("#form_email").val(), 
    message: $("#msg_text").val() 
}; 
$.ajax({ 
    type: "POST", 
    url: "email.php", 
    data: data, 
    success: function(){ 
     $('.success').fadeIn(1000); 
    } 
}); 

पीएचपी:

<?php 
if($_POST){ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['text']; 

//send email 
    mail("[email protected]","My Subject:",$email,$message); 
} 
?> 
संबंधित मुद्दे