Ajax调用执行两次?

时间:2012-10-02 15:16:29

标签: php jquery

为什么这个ajax电话会给我两个答案?首先,以一种几乎不引人注意的方式得到正确答案,然后是另一个答案?

表单页面

   $(document).on('click','.save-action',function(){
                    //var text = tinyMCE.get('#action-desc').getContent(); 
                    if($("#form-save-action").validationEngine('validate'))
                    {

                        $.ajax({
                            type: "POST",
                            cache: false,
                            data: $("#form-save-action").serialize(),
                            url:"modules/actions/insertaction.php",      

                            success : function (data) {

                               $("#response-message").html(data);

                            }
                        })
                    }

                }); 
       AdicionarAcção            Nomedaacção                              Descrição                                                  
          Gravar               

Insertaction.php

$exists = $action->actionExists($actionName);



if($exists == 0)
{
        $action->insertAction(array($actionName,$action->clearContent($actionDesc),1));
        echo 'Acção adicionada com sucesso!'; 
}
if($exists >= 1)
{
      echo 'Acção já existe!'; 
}

因此,如果我点击.save-action按钮,它会首先返回正确的答案,然后是另一个。

PS:ajax调用包含在$(document).ready函数

2 个答案:

答案 0 :(得分:2)

只是给出正式答案(在评论中发现):

脚本被调用两次。通过HTML属性或加载时。您需要确保不运行脚本两次,否则事件处理程序将被添加两次(因此,该函数将运行两次)。

答案 1 :(得分:-1)

尝试直接将动作绑定到班级

$('.save-action').click(function(e){
               e.preventDefault();
                //var text = tinyMCE.get('#action-desc').getContent(); 
                if($("#form-save-action").validationEngine('validate'))
                {

                    $.ajax({
                        type: "POST",
                        cache: false,
                        data: $("#form-save-action").serialize(),
                        url:"modules/actions/insertaction.php",      

                        success : function (data) {

                           $("#response-message").html(data);

                        }
                    })
                }

            });