2012-04-23 32 views
0

我遇到了一些麻煩,我的JQuery Post腳本。我使用Jquery提交(彈出)窗體,當我禁用此功能時,一切運行平穩。 (我只是不想離開我的表單頁面)。JQuery表單(html)POST郵件到PHP郵件(html)

部分我的輸入形式(有些單選按鈕)我的輸入形式

<label><input type="radio" name="algemene_rating" id="algemene_rating" value="zeer_slecht" />1</label> 
<label><input type="radio" name="algemene_rating" id="algemene_rating" value="slecht" />2</label> 
<label><input type="radio" name="algemene_rating" id="algemene_rating" value="matig" />3</label> 
<label><input type="radio" name="algemene_rating" id="algemene_rating" value="goed" />4</label> 
<label><input type="radio" name="algemene_rating" id="algemene_rating" value="zeer_goed" />5</label> 

部分(一些複選框)我的表單輸入(文本(區))

<input type="checkbox" name="suggestie_dienstverlening" value="true" style="float:left; margin-bottom:5px;"/><div class="FeedbackCheckbox">Dienstverlening</div> 
<input type="checkbox" name="suggestie_opmaak" value="true" style="float:left"/><div class="FeedbackCheckbox">Opmaak</div> 
<input type="checkbox" name="suggestie_functionaliteit" value="true" style="float:left; margin-bottom:5px;"/><div class="FeedbackCheckbox">Functionaliteit</div> 
<input type="checkbox" name="suggestie_site_inhoud" value="true" style="float:left; margin-bottom:5px"/><div class="FeedbackCheckbox">Site inhoud</div> 
<input type="checkbox" name="suggestie_anders" value="true" style="float:left"/><div class="FeedbackCheckbox">Anders...</div> 

部分

<input type="text" name="url_van_foutpagina" style="font-size:9px; width:275px"> 
<input id="e-mail" type="text" value="" name="email" /> 

沒有JQuery的,W第i這個PHP腳本,一切都順利運行:

<?php 

//collect vals 
$algemene_rating = htmlspecialchars($_POST['algemene_rating']); 
if ($_POST['suggestie_dienstverlening'] == "true") {$sugestie_onderwerp .= "<li> Dienstverlening </li>";} 
if ($_POST['suggestie_opmaak'] == "true")   {$sugestie_onderwerp .= "<li> Opmaak </li>";} 
if ($_POST['suggestie_functionaliteit'] == "true") {$sugestie_onderwerp .= "<li> Functionaliteit </li>";} 
if ($_POST['suggestie_site_inhoud'] == "true")  {$sugestie_onderwerp .= "<li> Site inhoud </li>";} 
if ($_POST['suggestie_anders'] == "true")   {$sugestie_onderwerp .= "<li> Anders.. </li>";} 
$url_van_foutpagina = htmlspecialchars($_POST['url_van_foutpagina']); 

//Collect 'Emailadres' 
$email = htmlspecialchars($_POST['email']); 

// Collect: 'Attributes' 
$tijd = time(); 
$datum = strftime("%d/%m/%y %H:%M", $tijd); 
$ip = getenv("REMOTE_ADDR"); 

// Collect 'Mail info' 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

// Het bericht voor de ontvanger 
$message = '<html><body>'; 
$message .= '<table rules="all" style="background-color:#F8F8F8; width:600px; font-family:arial; font-size:11px; valign:top">'; 
$message .= '<table rules="all" border="1px solid #666666" style="background-color:#F8F8F8; width:600px; font-family:arial; font-size:11px;">'; 
$message .= '<td style="width:200px;" /></td>'; 
$message .= "<tr><td><strong></strong> </td><td><h3>Feedbackformulier Multihout.nl</h3></td></tr>"; 
// 'Attributes' 
$message .= "<tr><td><hr/></td><td><hr/></td></tr>"; 
$message .= "<tr><td><strong>Feedback datum:</strong> </td><td>  " . $datum . "</td></tr>"; 
$message .= "<tr><td><strong>Feedback e-mailadres:</strong> </td><td> " . $email . "</td></tr>"; 
$message .= "<tr><td><strong>Feedback IP-adres:</strong> </td><td>  " . $ip . "</td></tr>"; 
// 'Algemeen' 
$message .= "<tr><td><hr/></td><td><hr/></td></tr>"; 
$message .= "<tr><td><strong>Algemene rating van de site:</strong> </td><td>" . $algemene_rating . "</td></tr>"; 
$message .= "<tr><td><hr/></td><td><hr/></td></tr>"; 
$message .= "<tr><td><strong>Feedback over URL:</strong> </td><td>" . $url_van_foutpagina . "</td></tr>"; 
$message .= "<tr><td><hr/></td><td><hr/></td></tr>"; 
$message .= "<tr><td><strong>Onderwerp suggestie:</strong> </td><td>" . $sugestie_onderwerp . "</td></tr>"; 
$message .= "</table>"; 
$message .= "</body></html>"; 

// Gedeelte voor het verzenden van het bericht 
$mailadres = "[email protected]"; 
$message = str_replace ("<br>","\n", $message); 
$headers .= "From: Test <[email protected]>" . "\r\n"; 
mail("$mailadres", "Nieuw bericht via mailformulier", $message, $headers); 

?> 
<!--Display a thankyou message in the callback --> 
<div id="mail_response"> 
    <h3>Thank you <?php echo $name ?>!</h3><br /> 
    <p>I will answer your message soon as possible.</p><br /><br /><br /> 
    <h5>Message sent on: </h5> 
    <p><?php echo $todayis ?></p> 
</div>  

但是,如果我用這個js腳本(提交/後的部分)我得到了一個未定義值在我的郵件,表格。

//submission scripts 
    $('.contactForm').submit(function(){ 
     //statements to validate the form 
     var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
     var email = document.getElementById('e-mail'); 
     if (!filter.test(email.value)) { 
      $('.email-missing').show(); 
     } else {$('.email-missing').hide();} 
     //if (document.cform.name.value == "") { 
     // $('.name-missing').show(); 
     //} else {$('.name-missing').hide();} 
     //if (document.cform.message.value == "") { 
     // $('.message-missing').show(); 
     //} else {$('.message-missing').hide();}   
     if 
     //((document.cform.name.value == "") || 
     (!filter.test(email.value)) 
     //|| (document.cform.message.value == "")) 
     { 
      return false; 
     } 

     if 
     //((document.cform.name.value != "") && 
     (filter.test(email.value)) 
     //&& (document.cform.message.value != "")) 
     { 
      //hide the form 
      $('.contactForm').hide(); 

      //show the loading bar 
      $('.loader').append($('.bar')); 
      $('.bar').css({display:'block'}); 

      //send the ajax request 
      $.post('mail.php',{ 
          algemene_rating:$('#algemene_rating').val(), 
    url_van_foutpagina:$('#url_van_foutpagina').val(), 
    sugestie_onderwerp:$('#sugestie_onderwerp').val(), 
    email:$('#email').val()}, 

      //return the data 
      function(data){ 
       //hide the graphic 
       $('.bar').css({display:'none'}); 
       $('.loader').append(data); 
      }); 

      //waits 2000, then closes the form and fades out 
      setTimeout('$("#backgroundPopup").fadeOut("slow"); $("#contactForm").slideUp("slow")', 2000); 

      //stay on the page 
      return false; 
     } 
    }); 
    //only need force for IE6 
    $("#backgroundPopup").css({ 
     "height": document.documentElement.clientHeight 
    }); 
}); 

我認爲這個問題是在這裏:

//send the ajax request 
       $.post('mail.php',{ 
algemene_rating:$('#algemene_rating').val(), url_van_foutpagina:$('#url_van_foutpagina').val(), 
sugestie_onderwerp:$('#sugestie_onderwerp').val(), email:$('#email').val()}, 

但我不知道如何在jQuery的正確發佈。或者以正確的方式將其放入.html郵件中。我試圖序列化整個表單,但我不知道如何'反序列化',所以我可以正確填寫html郵件。

我希望你們能幫助我..尋找並試圖長到現在這個SOLV我自己.. :)

+0

您將要安裝的Firebug(或其他工具),這樣你可以看到請求/響應週期。通過這種方式,您可以查看是否正確發送到服務器 - 然後解決未返回的項目的問題。 – 2012-04-23 13:47:29

+0

是的,使用類似Firebug或Chrome檢查器的開發工具來查看錶單發佈的內容和位置。或者發佈一個鏈接到一個完整的jsbin,人們可以使用它來修復你的代碼。否則你可能不會得到任何好的答案。 – 2013-08-13 10:50:52

回答

0

我相信你所尋找的是一個Ajax請求。您希望在不刷新頁面的情況下發送數據。

http://api.jquery.com/jQuery.ajax/

+0

uhm ...是的..'//發送ajax請求'但問題是如何?如何使用Jquery發佈複選框,單選按鈕,文本(區域)?如何'un'serialize表單,並將其放入一個mail.html電子郵件的mailform.php腳本? – 2012-04-23 12:43:36