如何在ajax调用之前禁用函数,并在ajax成功时启用它
how to disable a function before ajax call, and enable it on ajax success?
我有一个函数在ajax函数之外,我想在ajax运行时禁用这个"启用"点击函数,并在ajax成功加载后启用它,我该如何做到这一点?如有任何帮助,我们将不胜感激。这是我的代码:
$('enable').click(function () {
console.log(123);
$(this).css('display', 'none');
var xhr = $.ajax({
type: "POST",
url: $.vp + "signup/distLookup.ashx" + "?first=" + val_f_name + "&last=" + val_l_name + "&country=" + val_country + "&language=" + $.langID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
;
var enable = true;
$('enable').click(function () {
if(enable) {
enable = false;
console.log(123);
$(this).css('display', 'none');
var xhr = $.ajax({
type: "POST",
url: $.vp + "signup/distLookup.ashx" + "?first=" + val_f_name + "&last=" + val_l_name + "&country=" + val_country + "&language=" + $.langID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
enable = true;
}
});
}
});
当ajax被触发时,您可以将enable设置为false。
编辑:
有这样的事吗?
var enable = true;
$('enable').click(function () {
if(enable) {
console.log(123);
$(this).css('display', 'none');
}
});
function callAjax() {
enable = false;
var xhr = $.ajax({
type: "POST",
url: $.vp + "signup/distLookup.ashx" + "?first=" + val_f_name + "&last=" + val_l_name + "&country=" + val_country + "&language=" + $.langID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
enable = true;
}
});
}
如果ajax在点击函数内,则:
$('enable').click(function () {
console.log(123);
$(this).hide();
var that=this;
var xhr = $.ajax({
type: "POST",
url: $.vp + "signup/distLookup.ashx" + "?first=" + val_f_name + "&last=" + val_l_name + "&country=" + val_country + "&language=" + $.langID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
$(that).show();
}
});
});
其他:
$('enable').bind('click',function () {
console.log(123);
$(this).unbind('click');
});
var xhr = $.ajax({
type: "POST",
url: $.vp + "signup/distLookup.ashx" + "?first=" + val_f_name + "&last=" + val_l_name + "&country=" + val_country + "&language=" + $.langID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
$('enable').bind('click',function () {
console.log(123);
$(this).unbind('click');
});
}
});
尝试使用.one
而不是.on
,然后在success
上附加处理程序。
function sendRequest() {
var xhr = $.ajax({
type: "POST",
url: $.vp + "signup/distLookup.ashx" + "?first=" + val_f_name + "&last=" + val_l_name + "&country=" + val_country + "&language=" + $.langID,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
$('enable').one('click', sendRequest); // We restore it when get success
}
}
$('enable').one('click', sendRequest); // once you clicked your handler would be removed
当您想要禁用点击事件时,您可以有一个可以引发的标志:
$('enable').click(function () {
if ($(this).data('disabled')) return;
$(this).data('disabled', true);
$.ajax({ ... }).always(function() { $(this).data('disabled', false); }.bind(this));
});
使用.always()
确保在ajax请求也失败时启用它。
相关文章:
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- AJAX调用并在Node中获取返回数据
- 如何设置$.ajax请求的超时,并在超时时间过长时进行重做
- 从输入中获取字符串,并在AngularJS中发出AJAX请求
- Android/Chrome jQuery AJAX请求在到达服务器之前失败,并出现parserror
- 如何完成表单后使用 AJAX 重定向并在其他页面上显示数据
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 获取第一个字符串并在 Ajax 中进行比较
- Ajax:如何发送'空'文件,并在$_FILES中获取
- 如何在没有Ajax的情况下将blob存储在表单中,并在单击提交时将其发送到服务器
- 我如何在AJAX中循环数据并在其中存储特定值's各自的tr td
- 使用Ajax加载页面,并在必要时加载新脚本
- 如何访问本地json文件并在纯JavaScript和AJAX上加载包含内容的菜单
- Jquery 将内容加载到 ajax 容器中,并在完全完成时发出警报
- 聚合物数据绑定铁 AJAX 并在控制台中访问获取的 JSON
- 将一组选中的复选框的值获取到 JavaScript 数组中,并在 ajax 请求中传递它们
- 使用crypto-js加密密码并通过ajax发送表单(并在java中解密),我得到:类型错误:无法读取未定义的属性“单词
- 使用递归函数按顺序执行多个 ajax 请求,并在所有请求完成后执行回调函数
- 发布Ajax并在Node中获取空对象
- 将php变量传递给ajax并在另一个php页面上获取它