如何通过ajax发送带有php mail()附件的电子邮件,而不重新加载页面
有正在使用的代码有问题,但我不知道这是什么
存在html和ajax请求
<form action="send.php" id="data" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<input type="email" id="email" name="email" placeholder="email"> <br>
<textarea name="msg" id="msg" placeholder="message"></textarea> <br>
Attach File <br>
<input type="file" name="attach1"><br>
<input type="file" name="attach2"><br>
<input id="send" type="submit" value="submit">
</form>
并且这里的ajax代码正在使用jQuery 2.1.1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#data').submit( function( e ) {
var formData = new FormData($(this)[0]);
$.ajax({
url: window.location.pathname,
// url: "send.php",
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
// alert(window.location.pathname)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
});
</script>
像这样更改脚本
<script>
$(document).ready(function() {
$('#data').submit( function( e ) {
e.preventDefault()
var formData = new FormData();
formData .append('email', $("input[name='email']" ).val());
formData .append('msg', $("input[name='msg']" ).val());
formData .append('msg',$("input[name='attach1']")[0].files[0]).val());
formData .append('msg',$("input[name='attach2']")[0].files[0]).val());
$.ajax({
url: window.location.pathname,
// url: "send.php",
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
// alert(window.location.pathname)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
});
</script>
我对jQuery不太熟悉,因此请原谅jQuery和Vanilla的弗兰肯斯坦混合体-但是您可以尝试这样。您将需要处理表单提交-查看控制台以查看请求的内容以了解如何处理。
<?php
if( $_SERVER['REQUEST_METHOD']=='POST') {
ob_clean();
/* process input data / form submission here - send emails etc */
$data=file_get_contents('php://input');
exit( $data );
}
?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#send').click( function( e ) {
e.preventDefault();
var formData = new FormData( document.getElementById('data') );
$.ajax({
url:location.href,
type:'POST',
data: formData,
async: false,
success: function(data) {
alert(data)
},
cache:false,
contentType:'text',
processData:false
});
});
});
</script>
</head>
<body>
<form action="send.php" id="data" method="post" accept-charset="utf-8" enctype="multipart/form-data">
<input type="email" id="email" name="email" placeholder="email"> <br>
<textarea name="msg" id="msg" placeholder="message"></textarea> <br>
Attach File <br>
<input type="file" name="attach1"><br>
<input type="file" name="attach2"><br>
<input id="send" type="submit" value="submit">
</form>
</body>
</html>