假设我的导航中有两个链接,使用Ajax.BeginForm
在mvc4中使用不显眼的javascript。第一个请求向数据库发出一个请求,第二个请求发出两个请求,因此需要两倍的时间。假设每个请求需要一秒钟。现在,用户点击第二个链接,然后立即点击第一个链接。按此顺序发生的计划:
让我们说用户这样做是因为他在点击后立即意识到了他的错误。现在,而不是预期的第1页,他看到它只是一瞬间,然后再次,他看到一个页面#2,即使他不想完全达到它。
首先,这是一个问题吗?如果是,是否有关于如何以最恰当的方式解决它的例子?或者也许我只是在田里追风,应该忘记它?
答案 0 :(得分:7)
当你创建一个新的AJAX时,你应该总是中止之前的AJAX调用。它将帮助您的服务器并为用户提供所需的结果。
var xhr;
function makeRequest() {
if (xhr)
xhr.abort();
xhr = $.ajax(...);
}
答案 1 :(得分:0)
也许您应该在请求正在进行时查看禁用链接。也许只需使用微调器在页面上添加一个简单的叠加层,以防止用户在请求完成之前单击其他链接。
答案 2 :(得分:0)
<强> CSS 强>
#loading{
position: absolute;
z-index: 99998;
top: 0px;
left: 0px;
width: 100%;
height: 1161px;
background-color: rgb(255, 255, 255);
opacity: 0.01;
background-position: initial initial;
background-repeat: initial initial;
}
<强> HTML 强>
<div id="loading"></div>
<强>脚本强>
$( document ).ajaxStart(function() {
$( "#loading" ).show();
});
$( document ).ajaxComplete(function( event,request, settings ) {
$( "#loading" ).hide();
});