jQuery AJAX InProgress

时间:2012-10-26 19:23:30

标签: php html ajax jquery

所以我在我的网站主页上设置了密码恢复选项,使用swift邮件程序通过新密码向用户发送电子邮件。用户将他/她的电子邮件输入到框中,主页面向php脚本发送AJAX请求。所有这些都有效但是当你点击发送时,需要一段时间才会发送回复说明New password successfully sent to email的PHP脚本。我不希望用户再次点击发送,并再次认为第一次点击没有通过。有没有办法在ajax等待脚本的响应时禁用发送按钮以及显示某种加载条?感谢

2 个答案:

答案 0 :(得分:1)

您可以在单击按钮后禁用该按钮,然后在ajax完成时重新启用它。

所以在调用ajax之前要执行以下操作:

 $("#MyBtn").attr("disabled", "disabled");

然后一旦AJAX完成,删除属性

$("#MyBtn").removeAttr("disabled");      

你也可以有一个隐藏的div然后显示/隐藏它..

<div id="divWait" style="display:none;">Please Wait...</div>

上面的代码现在是

所以在ajax调用之前:

 $("#MyBtn").attr("disabled", "disabled");
 $("divWait").show();

当AJAX结束时......

$("#MyBtn").removeAttr("disabled");   
$("#divWait").hide();

更重要的是,根据AJAX调用的结果,您也可以更改div中的文本。

所以..如果它有效,不要隐藏div,只需更改文字:

$("#divWait").html("Your password was sent..");

如果失败,请隐藏上面的div,或更改消息

 $("#divWait").html("oops, there was a booboo");

答案 1 :(得分:1)

使用JQuery ajaxStart和ajaxStop函数,而不是手动执行它。

$('#progress').ajaxStart(function () {
 //disable the button
 $(this).show();
}).ajaxStop(function () {
 //enable the button
 $(this).hide();
});

注意:它会显示在页面上的每个JQuery AJAX操作上。