为什么我的ajax会两次打电话?

时间:2014-04-08 13:22:35

标签: php jquery ajax

我有这个触发ajax调用的脚本,它将触发并从​​数据库中返回正确的数据,然后突然间全部再次触发,留下错误消息。它有效但肯定存在一些错误。

我一直试图识别它,但几乎没有成功。

这是代码:

$(document).on('click',"#frcode_sendagain_button",function(){
$.ajax({
    url: 'ajax/ajax_frcode_sendagain.php', 
    type: "POST",
    dataType: 'json',
    cache: false,
    data: ({email_ajax: window.global_email_var}),
    success: function(data){
        var feedback_from_database = data;
        $('#frcode_feedback').css({"visibility": "visible", "color": "#347C17"});
        $('#frcode_feedback').html('Авторизационный код выслан');
    },
    error: function(){
        $('#frcode_feedback').css({"visibility": "visible", "color": "#CC0000"});
        $('#frcode_feedback').html('Серверная ошибка');
    }
});
});

php脚本

session_start();
include('mysql/database.php');
$email_from_jq=$_POST['email_ajax'];
$create_pdo=new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$sql_query = "SELECT * FROM users WHERE email = :email_from_jq";
$query = $create_pdo->prepare($sql_query);
$query->bindParam(':email_from_jq', $email_from_jq);
$query->execute();
$query->setFetchMode(PDO::FETCH_ASSOC);
$row_from_query=$query->fetch();
if (!empty($row_from_query['frcode'])){
    $messagetosend="<font size=\"2\" color=\"#347C17\" face=\"Tahoma\"><strong>Приветствуем нового пользователя проекта 'Фаворит'!</strong></font><br><font size=\"2\"      color=\"#1F2320\" face=\"Tahoma\">Для того, чтобы начать пользоваться нашим сайтом, вам нужно будет ввести авторизационный код.<br>Ваш авторизационный код: <font size=\"2\" color=\"#347C17\" face=\"Tahoma\"><strong>".$row_from_query['frcode']."</strong></font><br>Этот процесс проводится в целях борьбы со спамом и его предотвращения.<br>С уважением,<br>Проект 'Фаворит'.</font>";
$mailheader='MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=UTF-8' . "\r\n";
$mailheader.="X-Mailer: PHP \r\n";
$mailheader.="From: Фаворит <happyregistration@favorit.kz>";
mail($row_from_query['email'],"Авторизация на проекте 'Фаворит'",$messagetosend,$mailheader);
$array_to_json=array("action" => "sent");
    echo json_encode($array_to_json);}

1 个答案:

答案 0 :(得分:0)

您最有可能定义了两次事件监听器,请尝试以下调试代码:

alert('init');//just to see where it is called
$(document).off('click',"#frcode_sendagain_button"); //removes previous  .on definitions
$(document).on('click',"#frcode_sendagain_button",function(){
...
}

这可以帮助您检测问题是否是重复的事件绑定。