簡體   English   中英

無法使用ajax php jquery發送電子郵件

[英]Unable send email with ajax php jquery

我嘗試了很多次,並訪問了許多論壇,但找不到答案。 請不要像其他帖子一樣發帖。 請嘗試幫助我解決此問題。

HTML表單:

<form action="" method="post" id="bookingForm">
<div id="radiobutton">
<input type="radio" name="trip" id="oneway" value="oneway" checked/>&nbsp;Oneway
<input type="radio" name="trip" id="return" value="return"/>&nbsp;Return
</div>
<br/>

From:<input id="boarding" type="text" maxlength="40" class="user_input" size="18" name="boarding" value="Hyderabad"/>
To:<input id="landing" type="text" maxlength="40" class="user_input" size="18" name="landing"/>
<br/><br/><br/>

Onward:<input id="datepick"  name="onward" class="user_input" size="15" />

Return: <input id="datepick2"  name="return" class="user_input" size="15" />
<br/><br/><br/>
Your Name:<input id="pax_name" type="text" name="pax_name"  class="user_input" size="25" maxlength="50"/>
<br/><br/>
Contact number:<input id="pax_contact" type="text" maxlength="14" name="pax_contact" class="user_input" size="25"/>
<br/><br/>
Email:<input id="pax_email" name="pax_email" class="user_input" size="25"/>
<br/><br/>
<center>

<input id="submit" type="button" value="Request" />

用於發送電子郵件的process.php:

<?php

  $trip=$_POST['trip'];
  $boarding=$_POST['boarding'];
  $landing=$_POST['landing'];
  $onward=$_POST['onward'];
  $return=$_POST['return'];
  $pax_name=$_POST['pax_name'];
  $pax_contact=$_POST['pax_contact'];
  $pax_email=$_POST['pax_email'];

        $to='anvesh@bsbtravels.com,anvifriend@gmail.com';
        $subject='Booking Form Query';
        $body=
              'Name: '.$pax_name."\n".
              'Contact Number: '.$pax_contact."\n".
              'Trip: '.$trip."\n".
              'From: '.$boarding."\n".
              'To: '.$landing."\n".
              'Onward Date: '.$onward."\n".
              'Return Date: '.$return."\n";
        $headers='From: '.$pax_name.'<'.$pax_email.'>';
        mail($to,$subject, $body, $headers)

?>

jQuery代碼:

$(document).ready(function(){
$('#submit').click(function(){
          var boarding=$('#boarding').val();
          var landing=$('#landing').val();
          var datepick=$('#datepick').val();
          var datepick2=$('#datepick2').val();
          var pax_name=$('#pax_name').val();
          var pax_contact=$('#pax_contact').val();
          var pax_email=$('#pax_email').val();


    if($('#landing').val().length<3 || $('#boarding').val().length<3 || $('#datepick').val().length<3 || $('#pax_name').val().length<3 || $('#pax_contact').val().length<8 || $('#pax_email').val().length<3){

        $('#bookfail').attr('title','Sending Failed!').text('Please Enter valid information. All fields are required').dialog({buttons:{'Ok':function(){
            $(this).dialog('close');
            }},closeOnEscape:true,draggable:false,resizable:false,modal:true});

    }else{
                var VarData='boarding='+boarding+'&landing='+landing+'&datepick='+datepick+'&datepick2='+datepick2+'&pax_name='+pax_name+'&pax_contact='+pax_contact+'&pax_email='+pax_email;
        $.ajax({
           type:'POST',
           url:'process.php',
                   data:VarData,
           success:function(){
           $('#booksuccess').attr('title','Request sent successfully').text('Your request has been sent. We will be in touch soon').dialog({buttons:{'Ok':function(){   $(this).dialog('close');
            }},closeOnEscape:true,draggable:false,resizable:false,modal:true});
           }
           error:function(){
                alert('Oops request sending failed. Please try again');
           }
        });
        }
    });
});

success回調后,您缺少逗號:

success:function(){
   ...
}
error:function(){
   ...
}

必須

success:function(){
   ...
},// <--
error:function(){
   ...
}

您正在以傳統的查詢字符串格式發布您的值...將您的值放在javascript對象中,並通過將其stringify將該對象發送到服務器...

有兩種方法可以做到這一點

1]修改您的javascript文件,如下所示

將所有值放在javascript對象中...像這樣

var VarData= {
    "boarding" : boarding,
    "landing" : landing,
    "datepick": datepick,
    "datepick2": datepick2,
    "pax_name": pax_name,
    "pax_contact": pax_contact,
    "pax_email": pax_email
}

並在$.ajax()調用中將data:varData行更改為

data: JSON.stringify(varData)

完成此操作后,您的PHP代碼將能夠捕獲$_POST數組中的值...

現在,您正在構建查詢字符串,並且$_POST數組中沒有索引(例如boarding和其他)。

第二種方式...保持Javascript原樣,然后修改PHP代碼。 像下面

捕獲從javascript代碼發送的數據。 並使用explode函數通過&中斷字符串

$temp = explode("&",$_POST['data']);

$temp將是一個數組,因此您需要使用循環遍歷它。 然后將$temp每個元素都打斷=符號

喜歡

$t=explode("=",$temp[$i]);

$t將具有您要查找的值,您可以使用它發送郵件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM