我目前正在使用@ Ajax.ActionLink以ajax方式调用某些控制器操作。有没有办法检测页面上是否已经有ajax请求正在运行/挂起?我想要的功能非常基本,即一旦用户点击他应该等待请求成功或失败的链接。应该允许他再次点击它(向服务器生成新的请求)。
我本可以禁用该链接但不想这样做(我想一个href无法禁用)
答案 0 :(得分:2)
试试这个,
此代码将在发出新的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;
});
});
答案 1 :(得分:0)
尝试jQuery ajax。它可以对服务器执行异步和同步请求。它使用起来非常简单。 <{3}}默认情况下,async = true。