当ajax调用相同的函数被连续调用时,需要ajax的帮助
need help on ajax when same function with ajax call is called continuously
我需要ajax的帮助,因为我是新的。当同一个ajax调用在ajax调用完成执行之前被多次调用时,它会在ui上弹出空的弹出框。我怎样才能解决这个问题?实际上当用户点击下载链接时,代码是在ajax的成功函数中编写的。但是如果用户在下载第一个之前多次点击下载链接。抛出错误。我该如何解决这个问题?
这是我的代码
function clickLink(section) {
$.ajax({
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: 'text',
url: 'MyService.asmx/getMetrics',
data: { programName: progName, startYear: beginYear, endYear: endYear, userName: spnUserName.innerHTML, rdate:dt },
success: function (data) {
var jdata = data;
jdata = jdata.replace(/<'/?[a-z][a-z0-9]*[^<>]*>/ig, "");
jdata = jdata.replace('<?xml version="1.0" encoding="utf-8"?>', '');
jdata = jdata.replace(''r'n', '');
var link = document.createElement("a");
link.setAttribute('href', jdata.trim());
link.onclick = OpenFile(jdata.trim());
},
error: function (xhr, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
可以设置一个临时类
$('.your-element:not(.disabled)').click(function(){
var $this = $(this);
$this.addClass('disabled');
$.ajax({
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: 'text',
url: 'MyService.asmx/getMetrics',
data: { programName: progName, startYear: beginYear, endYear: endYear, userName: spnUserName.innerHTML, rdate:dt },
success: function (data) {
var jdata = data;
jdata = jdata.replace(/<'/?[a-z][a-z0-9]*[^<>]*>/ig, "");
jdata = jdata.replace('<?xml version="1.0" encoding="utf-8"?>', '');
jdata = jdata.replace(''r'n', '');
var link = document.createElement("a");
link.setAttribute('href', jdata.trim());
link.onclick = OpenFile(jdata.trim());
},
error: function (xhr, textStatus, errorThrown) {
alert(errorThrown);
}
}).done(function(){
$this.removeClass('disabled');
});
return false;
});
将ajax函数声明为变量,然后使用函数并检查变量是否定义:
var xhr;
function CallAjax(){
if( xhr !== undefined ) return false;
xhr = $.ajax({
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: 'text',
url: 'MyService.asmx/getMetrics',
data: { programName: progName, startYear: beginYear, endYear: endYear, userName: spnUserName.innerHTML, rdate:dt },
success: function (data) {
var jdata = data;
jdata = jdata.replace(/<'/?[a-z][a-z0-9]*[^<>]*>/ig, "");
jdata = jdata.replace('<?xml version="1.0" encoding="utf-8"?>', '');
jdata = jdata.replace(''r'n', '');
var link = document.createElement("a");
link.setAttribute('href', jdata.trim());
link.onclick = OpenFile(jdata.trim());
},
error: function (xhr, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
相关文章:
- 阻止在select2单击时调用ajax
- 调用Ajax并返回响应
- Ajax:只在元素存在的情况下调用Ajax
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 调用Ajax内部的函数
- 无法获取属性'的值;拆分'在IE8中调用ajax之后
- 我们如何在Firefox中调用AJAX
- Rails:通过调用Ajax重定向
- Cookie 在 Spotify (Javascript) 中调用 ajax 后未保存
- 通过调用 Ajax 来设置 struts bean 值
- 无法从服务器中的 php 调用 Ajax 函数
- 如何在附加表行时调用 ajax
- 在facebook用户发送邀请请求后调用ajax调用
- 定期调用Ajax
- 调用Ajax生成的表单的值
- 无法调用ajax函数
- 在调用AJAX之后显示ng控制器的内容;作为“;作用
- CSS,Java脚本在php中调用ajax后无法正常工作
- 成功调用AJAX后,Toast Growl不会出现
- 如何在调用AJAX时记录或捕获信息和错误