我开发了一个简单的php应用程序。此应用程序包含一个html文件和一个php文件。我正在做的是当用户选择两个日期并输入他/她的电子邮件地址时,我正在调用我的php文件,该文件将邮件发送到输入的电子邮件ID。
它正确发送邮件。但问题是它没有告诉我邮件是否被发送的状态。我正在使用警报。
这是我的html文件:
<html>
<link rel="stylesheet" href="ui.all.css" type="text/css" media="screen" />
</head>
<body>
<label>Leave Application</label><br/>
From <input id="date" type="text" name="ndate" /><div id="d1"></div><br/>
To <input id="date1" type="text" name="ndate1" /><div id="d2"></div><br/>
Email To <input type="text" id="UserEmail" name="userEmail" onkeyup=""/><br/>
<input type="submit" id="btn_submit" value="Send" onclick="" />
<span id="d"></span>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#date").datepicker({ showOn: 'button', buttonImageOnly: true, buttonImage: 'Images/icon_cal.png' });
$("#date1").datepicker({ showOn: 'button', buttonImageOnly: true, buttonImage: 'Images/icon_cal.png' });
});
$("#btn_submit").click(function(event){
var hasError = false;
var dt1=$("#date").val();
var dt2=$("#date1").val();
var em=$("#UserEmail").val();
$(".error").hide();
if(dt1 == '')
{
$("#d1").before('<span class="error"><font color="red">This Field Must not be empty.</font></span>');
hasError = true;
}
if(dt2 == '')
{
$("#d2").before('<span class="error"><font color="red">This Field Must not be empty.</font></span>');
hasError = true;
}
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var emailaddressVal = $("#UserEmail").val();
if(emailaddressVal == '') {
$("#UserEmail").after('<span class="error"><font color="red">Please enter your email address.</font></span>');
hasError = true;
}
else if(!emailReg.test(emailaddressVal)) {
$("#UserEmail").after('<span class="error"><font color="red">Enter a valid email address.</font></span>');
hasError = true;
}
if(hasError == true) { return false; }
jQuery.ajax({
type: "GET",
url: "http://www.myserver.com/sent_mail.php",
async: false,
data: "dt1="+dt1+"&dt2="+dt2+"&email="+em,
success: function(msg){
alert(msg);
}
});
});
</script>
</body>
</html>
这是我的php文件:
<?php
`extract($_GET);`
$msg="Respected Sir,\n\n\tI will not be able to come to office from ".$dt1." to ".$dt2.". Please grant my leave";
$pcto=$email;
$pcsubject = 'Leave Application';
$pcmessage = $msg;
$pcheaders = 'From:abc@abc.com'."\r\n" .
'Reply-To: abc@abc.com'."\r\n" .
'X-Mailer: PHP/' . phpversion();
$isdone=mail($pcto, $pcsubject, $pcmessage, $pcheaders);
if($isdone)
echo "Mail Sent";
else
echo "Please Try Again";
?>
答案 0 :(得分:0)
您确定您的脚本返回正确的HTTP状态(因此实际调用了success
函数)吗?尝试添加
error: function(){
alert('Error');
}
找到ajax对象(或使用FireBug)。
答案 1 :(得分:0)
我会像这样编写if语句
if(mail($pcto, $pcsubject, $pcmessage, $pcheaders)):
echo "Mail Sent";
else:
echo "Please Try Again";
endif;
无论如何你试图回复那个文件中的东西吗?
只需在文件顶部添加类似的内容
echo "this is returning somethin";
exit;
查看是否返回,如果没有,则问题出在ajax请求中。
另外我会使用firebug而不是警告执行以下操作(确保已打开并启用了firebug控制台)
console.log(msg);
答案 2 :(得分:0)
现在不知道相同的代码正在为我运行......