1

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

我已经删除了测试以检查电子邮件是否存在以简化事情。

<?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

阿贾克斯:

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);
    }

});
}

值得注意的是,注册表单在页脚中,这是一个包含。不确定这是否相关。

编辑: beforeSend 中的警报正在显示,所以我知道它正在调用函数等。错误的警报不会被调用。日志中没有 XHR 消息。

4

1 回答 1

0

三个问题似乎

它找不到 php 文件

什么时候它对我在顶部的要求声明不满意

然后 POST 变量的名称不正确。

工作中。

于 2013-09-20T14:32:59.023 回答