[英]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/> Oneway
<input type="radio" name="trip" id="return" value="return"/> 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.