【发布时间】:2012-09-23 11:28:22
【问题描述】:
为什么这个 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);
}
})
}
});
Adicionar Acção
名称 da acção
描述
格拉瓦
插入操作.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).readyfunction 中
【问题讨论】:
-
这个表单是动态加载的吗?
-
脚本是否只包含在页面中一次?似乎该脚本可能包含两次..?
-
可能你在元素上绑定了两次相同的函数
-
请发布 HTML... 我们暗示的是您调用了该函数两次。如果我们有完整的源代码会有所帮助...
-
@JoãoDias:如果您再次发现自己处于这种情况并且无法确定第二次绑定的来源,您可以使用
$(document).off('click', '.save-action').on('click','.save-action',function(){在查找时解决此问题原因。off().on()不应该是一个永久的解决方案,因为它会解除与目标的所有点击事件的绑定,但在寻找真正的解决方案时它可以是一个临时修复。