ASP.Net Mvc Ajax请求正在进行中

时间:2014-11-27 09:40:10

标签: javascript jquery asp.net ajax asp.net-mvc

我目前正在使用@ Ajax.ActionLink以ajax方式调用某些控制器操作。有没有办法检测页面上是否已经有ajax请求正在运行/挂起?我想要的功能非常基本,即一旦用户点击他应该等待请求成功或失败的链接。应该允许他再次点击它(向服务器生成新的请求)。

我本可以禁用该链接但不想这样做(我想一个href无法禁用)

2 个答案:

答案 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。