ajax联系表格不发送电子邮件
整天我试图解决问题,但没有成功。 表单不发送消息,也没有写入错误。ajax联系表格不发送电子邮件
form.html
<div class="ok" id="ok"></div>
<div id="data">
<div id="alert" class="alert_ig"></div>
<form id="form" class=" clearfix" method="POST" action="">
<div class="col-sm-12">
<div class="form-group">
<input name="name" type="text" id="name" value="{$smarty.cookies.nameuser}" class="form-control" placeholder="Name"/>
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<input name="email" type="email" id="email" value="{$smarty.cookies.emailuser}" class="form-control" placeholder="E-mail"/>
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<textarea id="message" class="form-control" rows="5" name="text" placeholder="Message"></textarea>
</div>
</div>
<div class="col-sm-12">
<div class="form-group">
<button style="margin-top:10px" id="submit" type="submit" class="bot_g">Send</button>
</div>
</div>
</form>
<script>
$(document).ready(function() {
$('#submit').click(function(e){
var form = $(this);
var error = false;
if (!error) {
var data = form.serialize();
$.ajax({
type: 'POST',
url: '{$home}/system/modules/contacts/send.php',
dataType: 'json',
data: data,
success: function(data){
if (data.error.length > 0) {
$('#alert').html(""+data['error']+"");
$('#email').addClass("fill");
} else {
$('#ok').html('send.');
$("#data").css("display","none");
}
},
return false;
)};
});
</script>
</div>
send.php
<?php
require_once '../../inc/core.php';
$name=Text(trim($_POST['name']));
$email=Text(trim($_POST['email']));
$subject=Text(trim($_POST['subject']));
$text=Text(trim($_POST['text']));
if(empty($name)){
$json['error'] = 'Come on, you have a name don\'t you?';
echo json_encode($json);
exit;
}
if (mb_strlen($name) < 2 || mb_strlen($name) > 250){
$json['error'] = 'Your name must consist of at least 2 characters!';
echo json_encode($json);
exit;
}
if(empty($email)){
$json['error'] = 'No Email, No Message!';
echo json_encode($json);
exit;
}
if (mb_strlen($email) < 5 || mb_strlen($email) > 64){
$json['error'] = 'Your email must consist of at least 5 characters!';
echo json_encode($json);
exit;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
$json['error'] = 'Unknown characters in your e-mail!';
echo json_encode($json);
exit;
}
if(empty($subject)){
$json['error'] = 'Um...yea, you have to write something to send this form.';
echo json_encode($json);
exit;
}
if (mb_strlen($subject) < 5 || mb_strlen($subject) > 250){
$json['error'] = 'Your subject must consist of at least 5 characters!';
echo json_encode($json);
exit;
}
if (mb_strlen($text) < 2 || mb_strlen($text) > 10000){
$json['error'] = 'Thats All? Really?';
echo json_encode($json);
exit;
}
$mailer = new phpmailer();
$mailer->ContentType = "text/html";
$mailer->From = $email;
$mailer->Subject = 'New message from '.$home;
$mailer->Body ="Subject: ".$subject."<br/>
Name: ".$name."<br/>
E-mail: ".$email."<br/>
".nl2br($text);
$mailer->AddAddress($setup['emailadmin'], '');
$mailer->Send();
$json['error'] = 0;
echo json_encode($json);
?>
当是我的问题与此代码? 我必须使用此send.php格式,但可以改变Ajax和HTML表单的工作...
感谢
var form = $(this);
在这一行$(本);指的是提交按钮,所以var表单,存储你的提交按钮,而不是表单元素本身。
您可能在客户端看不到错误,但如果您尝试调试发送到服务器端的数据,则会看到有问题。
尝试用与您的表单元素相匹配的选择器替换$(this)。
此外,如果您希望在服务器返回错误(例如500错误)时通知用户,则可以向您的$ ajax函数添加错误回调以及您已有的成功回调。
查看文档http://api.jquery.com/jquery.ajax/。
还要在事件处理程序结束时添加e.preventDefault(),以防止在您要执行ajax提交时提交表单的默认操作。
尝试但仍然没有工作。 – Martinovska
你的网址也可能是错误的。我没有看到javascript会如何知道{$ home}是什么。尝试对其进行硬编码以进行调试。 另外,从你拥有它的地方删除返回false。成功方法之后,我认为它没有做任何事情。 – klikas
你想给我一个简单的吗?我无法解决问题。 – Martinovska
1 - $ home:这个变量是打印一个本地路径还是apache公用文件夹路径? 2 - 你如何打印这个变量{$ home}? 3 - 为了能够更好地进行调试,您必须使用开发人员选项(右键单击,检查元素),然后打开网络选项卡,然后单击按钮 您将能够检查请求数据,请求网址,回复。所以你可以识别错误原因 –
该URL的工作。 $ HOME =(我的网站URL) – Martinovska
所以里面你的网站,这个路径是文件的路径:/system/modules/contacts/send.php 或类似的/ var/www/html等/系统/模块/联系人/ send.php –