我正在订阅订阅表单。它需要一个用户的电子邮件,点击它应该检查电子邮件是否在数据库中,如果它返回false,如果不是它应该添加它然后返回true。
我希望使用ajax来改善用户体验。
这个函数似乎不再被调用,我对AJAX很新,所以不确定问题出在哪里。任何帮助表示赞赏。
HTML:
<section>
<h4>Stay Updated</h4>
<p>Sign up for our newsletter. We won't share your email address.</p>
<form name="newsletterForm" id="newsletterForm" action="" method="post">
<div class="input-append row-fluid">
<input type="email" placeholder="Email Address" class="span6" name="newsletterEmail" id="newsletterEmail"/>
<input type="submit" id="newsletterSubmit" name="newsletterSubmit" value="newsletterSubmit" onclick="newsletterSignup(); return false">
<p id="status"></p>
</div>
<!--close input-append-->
</form>
</section>
PHP:
如果电子邮件存在,我已将测试删除至chec以简化操作。
<?php require(dirname(__FILE__).'../core/init.php');
if($_POST){
$email = $_POST['newsletterEmail'];
if($newsletter->addEmail($email) == true){
$data['message'] = "Signed up";
$data['success'] = true;
}
echo json_encode($data);
}
php函数:
public function addEmail($email){
$query = $this->db->prepare("INSERT INTO `newsletter` (`email`, `signupDate`)
VALUES (?, ?)");
$mysqltime = date ("Y-m-d H:i:s", time());
$query->bindValue(1, $email);
$query->bindValue(2, $mysqltime);
try{
$query->execute();
return true;
}catch(PDOException $e){
die($e->getMessage());
}
}//end add email function
AJAX:
function newsletterSignup(){
var email = $('#newsletterEmail').val();
if(email == ""){
$('input#newsletterEmail').focus();
return false;
}
var params = {email: email};
var url = "newsletterSignup.php";
$.ajax({
type: 'POST',
url: url,
data: params,
dataType: 'json',
beforeSend: function(){
alert("ASD");
document.getElementById("status").innerHTML='<img src="sending.gif"/>sending...';
},
success: function(data){
alert("success");
if(data.success == true){
document.getElementById("status").innerHTML= '<p>Sent!</p>' ;
}else{
document.getElementById("status").innerHTML= '<p>Error!</p>' ;
}
},
error: function(error){
alert("Gets ERRORA");
console.log(error);
}
});
}
值得注意的是,注册表单位于包含的页脚中。不确定这是否相关。
EDIT:正在显示beforeSend中的警报,因此我知道它正在调用该函数等。但是不会调用错误警报。日志中没有XHR消息。
答案 0 :(得分:0)
似乎有三个问题
找不到php文件
当它可能不满意我在顶部的需求声明时
然后POST变量名称错误。
现在正在工作。