Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理ajax表单和多个请求_C#_Asp.net Mvc_Asynchronous_Asp.net Ajax_Ajaxform - Fatal编程技术网

C# 如何处理ajax表单和多个请求

C# 如何处理ajax表单和多个请求,c#,asp.net-mvc,asynchronous,asp.net-ajax,ajaxform,C#,Asp.net Mvc,Asynchronous,Asp.net Ajax,Ajaxform,假设我的导航中有两个链接,它们在mvc4中使用Ajax.BeginForm和不引人注目的javascript。第一个向数据库发出一个请求,第二个向数据库发出两个请求,因此需要两倍的时间。假设每个请求需要一秒钟。现在,用户单击第二个链接,紧接着单击第一个链接。按此顺序发生的情况的计划: 用户点击链接2 用户点击链接1 已为链接1加载页面 已为链接2加载页面 假设用户这样做是因为他在点击后立即意识到自己的错误。现在,他看到的不是预期的第1页,而是一瞬间,然后再次看到第2页,即使他不想完全看到它 首先

假设我的导航中有两个链接,它们在mvc4中使用
Ajax.BeginForm
和不引人注目的javascript。第一个向数据库发出一个请求,第二个向数据库发出两个请求,因此需要两倍的时间。假设每个请求需要一秒钟。现在,用户单击第二个链接,紧接着单击第一个链接。按此顺序发生的情况的计划:

  • 用户点击链接2
  • 用户点击链接1
  • 已为链接1加载页面
  • 已为链接2加载页面
  • 假设用户这样做是因为他在点击后立即意识到自己的错误。现在,他看到的不是预期的第1页,而是一瞬间,然后再次看到第2页,即使他不想完全看到它


    首先,这是一个问题吗?如果是,是否有关于如何以最适当的方式解决问题的例子?或者我只是在田野里追逐风,应该忘掉它?

    也许你应该考虑在请求进行时禁用链接。可能只需在页面上添加一个带有微调器的简单覆盖,以防止用户在请求完成之前单击其他链接。

    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>
    

    在进行新的AJAX调用时,应该始终中止以前的AJAX调用。它将帮助您的服务器并为用户提供所需的结果

    var xhr;
    
    function makeRequest() {
        if (xhr) 
            xhr.abort();
    
        xhr = $.ajax(...);
    }
    

    谢谢你的回答。这是你自己的创意,还是一个网站(甚至是几个网站)的例子?一两个参考资料可能非常有价值。所有的方法都有。这是我的使用方法。这是你从过去看到的某个例子中想到的想法,还是仅仅是一个一般性的建议?@AndriusNaruševičius-我在网站上看到过这种做法-这个想法是你想让用户知道有一些过程跑步特别是如果你想防止用户反复点击按钮来处理新的请求。
    var xhr;
    
    function makeRequest() {
        if (xhr) 
            xhr.abort();
    
        xhr = $.ajax(...);
    }