这是我的脚本:
$("#search").on("click", function () {
$("#search_tutor").submit(function () {
data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type: "POST",
dataType: "json",
url: "fetch_tutor.php",
data: data,
success: function (data) {
alert(data);
}
});
return false;
});
});
我面临的问题是:
当我第一次单击$("#search")
时,alert(data);
会出现一次。当我第二次单击$("#search")
时,alert(data);
出现两次。所以,当我点击以下次数时,就会发生这种情况。根据我点击$("#search")
的次数,alert(data);
会出现多少次。根据我的理解,这表明$("#search_tutor")
是多次提交的。这是因为我在ajax函数之后使用了return false
来防止页面重新加载。但当我刷新页面时,alert(data);
只出现一次。我试过了:
1) 删除了return false
,但它重新加载了页面,我不希望发生这种情况,因为它没有将我从ajax调用中收到的结果附加到指定的div。
这没有任何改变
2)
$("#search_tutor").submit(function(event){
event.preventDefault();
这不允许在单击按钮后发生任何事情
3)
$("#search").on("click",function(event){
event.preventDefault();
我能想到的唯一解决方案是,在每次ajax调用后重新加载页面,但需要将ajax的结果附加到指定的div中。但我该怎么做呢?
问题是您在点击处理程序中注册提交处理程序,因此每次点击按钮都会注册一个新的提交处理程序。
因此,第二次单击按钮将调用提交处理程序两次,发送ajax请求两次。
不需要使用点击处理程序,只需使用提交事件
$("#search_tutor").submit(function() {
var data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type: "POST",
dataType: "json",
url: "fetch_tutor.php",
data: data,
success: function(data) {
alert(data);
}
});
return false;
});