我正在尝试使用$ .ajax将一些值发送到php页面然后发送电子邮件, 我无法弄清楚如何从我的php文件中获取$ .ajax的值,
任何帮助将不胜感激,
$(function() {
$('form#email input[type=image]').click(function() {
var name = $('form#email #name').val();
var enq = $('form#email #enq').val();
var dataString = 'name=' + name + '&enq=' + enq;
$.ajax({
type:'POST',
url:'email.php',
data:dataString,
success:function() {
$('form#email').fadeOut();
}
});
$('form#email')[0].reset();
return false;
});
});
php文件
if (isset($_POST['submit_x'])) {
$name = $_POST['name'];
$enq = $_POST['enq'];
$name = htmlentities($name);
$enq = htmlentities($enq);
//echo $name,$enq;
$to = 'amirkarimian@hotmail.co.uk';
//$to = 'tutor@inspiretuition.co.uk'
$subject = 'Enquiry';
$message = $enq;
mail($to,$subject,$message);
if(!mail) {
echo 'failed to send mail';
}
}
电子邮件未收到。 如果我不使用$ .ajax并正常提交表单,则会发送电子邮件。
感谢
答案 0 :(得分:2)
您正在检查您未提交的变量submit_x
,您需要删除该if
外检查。另外,最好让jQuery正确地序列化你的字符串(如果那里有&
怎么办?)像这样:
$(function() {
$('#email input[type=image]').click(function() {
$.ajax({
type:'POST',
url:'email.php',
data: { name: $('#name').val(), enq: $('#enq').val() }
success:function() {
$('form#email').fadeOut();
}
});
$('#email')[0].reset();
return false;
});
});
或者,如果<form>
元素具有正确的名称属性(它们应该,为了适度降级),您可以替换data: { name: $('#name').val(), enq: $('#enq').val() }
与data: $('#email').serialize()
。
答案 1 :(得分:1)
尝试将'submit_x'发送到php:)
答案 2 :(得分:0)
您可以使用数据映射来定义数据:
var name = $('form#email #name').val();
var enq = $('form#email #enq').val();
$.ajax({
type: 'POST',
url: 'email.php',
dataType: 'html',
data: {
submit_x : 1,
name : name,
enq : enq
},
success: function(html){
$('form#email').fadeOut();
},
error: function(e, xhr) { alert('__a Error: e: ' + e + ', xhr:' + xhr); }
});