我当前正在使用@ Ajax.ActionLink以ajax方式调用某些控制器操作。是否有任何方法可以检测页面上是否已经存在ajax请求正在运行/待处理?我想要的功能是非常基本的,即一旦用户单击链接应该等待请求成功还是失败。应该允许他再次单击(向服务器生成新请求)。
我本可以禁用链接,但不想这样做(我想不能禁用href)
试试这个,
该代码将在发出新的ajax请求之前检查任何正在执行的ajax请求。您还可以订阅OnSuccess,OnFailure回调:
@Ajax.ActionLink("Home", "Index", "Home", new AjaxOptions {
OnBegin = "return onBegin();",
OnComplete = "onComplete",
UpdateTargetId = "article_site"
})
接着:
var request_executing = false;
function onBegin() {
if (request_executing == true) {return false ;}
request_executing = true;
return true;
}
function onComplete() {
request_executing = false;
}
或使用jQuery替代方法(因此您不需要那个肿的jquery.unobtrusive-ajax.js
文件)
@Html.ActionLink("Click Me", "ajaxactions", null, new { id = "btn", @class = "btn btn-default" })
var isExecuting = false;
$('#btn').click(function(e) {
if(isExecuting) {
e.preventDefault();
return;
}
isExecuting = true;
$(this).addClass('someClass'); // optional - to give some visual effect to the link while loading
$.get('@Url.Action("ajaxactions")', function(data) {
$('#content').append(data);
$(this).removeClass('someClass');
isExecuting = false;
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句