从过去3天开始,我试图解决这个简单的问题,但没有成功。 我想要做的是点击链接按钮我必须下载文件并通过邮件发送通知
$ path是要下载的文件的路径
echo '<a href="'.$path.'" class="links" seq="'. $id .'" >Download</a>';
jquery调用sendMail.php onclick
$(".links").click(function(){
var s=($(this).attr('seq'));
alert(s);
$.ajax({
type:'POST',
url:'sendMail.php',
data:{s:s},
success:function(result){
alert(result);
}
})
});
问题是,当我点击下载链接文件时,下载但发送邮件脚本无效。 有没有像下载和发送邮件一样可能在链接点击PHP可能。 谢谢先进..
sendMail.php脚本
$q=$_POST['s'];
echo "this is q value".$q;
$sqlid="SELECT * FROM files_table WHERE id = '".$q."'";
$result = mysqli_query($conn,$sqlid);
$row=mysqli_fetch_array($result);
//collect data from table
$id=$row['id'];
$email =$row['user_email'];
$message=$row['message'];
$file_type=$row['file_type'];
$download=$row['file_name'];
$time=$row['time'];
$file_name=$row['file_name'];
$to=$email;
$from = "support@print.com"; // sender
$subject = $id.' '.$message;
$message = "
messsage text
";
// message lines should not exceed 70 characters (PHP rule), so wrap it
$message = wordwrap($message, 70);
// send mail
mail($to,$subject,$message,"From: $from\n");
echo "Mail Sent";
答案 0 :(得分:0)
试试这个 - 首先在邮件发送后调用php动作,你将被重定向到下载链接
$(".links").click(function (e) {
e.preventDefault();
var self = $(this);
var s = self.attr('seq');
var href = self.attr('href');
alert(s);
$.ajax({
type: 'POST',
url: 'sendMail.php',
data: {s: s},
success: function (result) {
window.location.href = href;
}
})
});
答案 1 :(得分:0)
您需要捕获点击事件并阻止该页面加载te链接。它重新加载你的窗口,所以你的JS不会被触发。在阻止触发链接之后,再次触发点击
试试这个:
$(".links").click(function(event){
event.preventDefault();
var s=($(this).attr('seq'));
alert(s);
$.ajax({
type:'POST',
url:'sendMail.php',
data:{s:s},
success:function(result){
alert("success");
}
});
window.location.href = $(this).attr("href");
});
修改强>
如果您使用aqbove示例,我认为您的JS工作正常,让我们尝试调试您的PHP代码:
你可以做些什么来测试你的问题:
验证您的POST已发送ID
验证数据库选择是否适用于其中,并返回一个实际结果。
尝试这样的事情: $ result = mysqli_query($ conn,$ sqlid);
if(mysql_num_rows($result) == 0)
{
echo "no Results";
}
else{
// only one result so we dont do a while loop here
$row = mysqli_fetch_assoc($result);
$id=$row['id'];
$email =$row['user_email'];
$message=$row['message'];
$file_type=$row['file_type'];
$download=$row['file_name']; // Two times assign "file_name" ??
$time=$row['time'];
$file_name=$row['file_name'];
}
切换mysqli_fetch_array($ result); for mysqli_fetch_assoc($ result);它更快,你不使用数字索引mysqli_fetch_array返回。 (见上面的例子)
尽可能基本测试邮件,然后尝试添加内容。
邮件(&#39; yourmail@gmail.com',&#39;我的主题&#39;,$ message);