AJAX订阅表格不起作用

时间:2013-09-20 13:42:07

标签: php jquery ajax forms subscription

我正在订阅订阅表单。它需要一个用户的电子邮件,点击它应该检查电子邮件是否在数据库中,如果它返回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消息。

1 个答案:

答案 0 :(得分:0)

似乎有三个问题

找不到php文件

当它可能不满意我在顶部的需求声明时

然后POST变量名称错误。

现在正在工作。