假设我的导航中有两个链接,它们在mvc4中将Ajax.BeginForm与不引人注目的JavaScript结合使用。第一个向数据库发出一个请求,第二个向数据库发出两个请求,因此花费了两倍的时间。假设每个请求花费一秒钟。现在,用户单击第二个链接,然后单击第一个链接。按此顺序发生的情况的方案:


用户点击链接2
用户点击链接1
页面已加载链接1
页面已加载链接2


假设用户这样做是因为他在点击后立即意识到了自己的错误。现在,他看到的不是第一页,而是一秒钟,然后再看到第二页,甚至他不想完全读完它。

首先,这是一个问题吗?如果是,是否有示例说明如何以最适当的方式解决该问题?或者,也许我只是在田野里追风而忘了它?

最佳答案

进行新呼叫时,应始终中止先前的AJAX呼叫。这将帮助您的服务器并为用户提供理想的结果。

var xhr;

function makeRequest() {
    if (xhr)
        xhr.abort();

    xhr = $.ajax(...);
}

10-08 11:13