多个ajax请求还是一次性?

时间:2016-07-26 08:14:00

标签: c# asp.net asp.net-mvc fullcalendar asp.net-ajax

我遇到了一些设计问题。 我有一个带有JQuery日历(全日历)的页面,我需要根据当前月份检索两个ID。 哪个是最好的解决方案?

  1. 每次重新呈现日历(月份已更改)时,使用Ajax请求检索ID
  2. 加载所有ID(我使用Asp.Net Mvc)一次,然后过滤。
  3. 我尝试使用第一种解决方案,但是当用户切换月份太快(每个示例的1月到2月)时,它会影响1月ID到2月,因为用户切换太快(在第一次请求实际完成之前)。

    希望我很清楚。

    提前谢谢。

2 个答案:

答案 0 :(得分:0)

第一种方法是优选的。您可以做的是添加时间禁用,对于我来说,在这种情况下,装载机是最佳用途

Css:

body.loading {
overflow: hidden;   
}

body.loading .modal1 {
display: block;
 }
 .modal1 {
 display:    none;
 position:   fixed;
 z-index:    1000;
    top:        0;
     left:       0;
height:     100%;
width:      100%;
background: rgba( 255, 255, 255, .8 ) 
            url('Loaderurl') 
            50% 50% 
            no-repeat;
  }  

查看 -    在底部添加

    <div class="modal1"></div>

脚本 -

 $body = $("body");
$(document).on({
    ajaxStart: function () {

        $body.addClass("loading");
    },
    ajaxStop: function (e) { 

       $body.removeClass("loading");
    }
 });

答案 1 :(得分:0)

感谢您的帮助。 我选择做的是初始化一个数组,我将所有needToCancel ajax请求放入其中并创建一个cancelAjaxRequests方法,我每次更改月份时都会调用该方法。

var lastMonthAjaxRequests = [];
lastMonthAjaxRequests.push(... my ajax requests...)
function abortAjaxRequests(ajaxRequests) {
            $.each(ajaxRequests,
                function() {
                    this.abort();
                });
        }

然后每次重新呈现我的日历时:

abortAjaxRequests(lastMonthAjaxRequests);
lastMonthAjaxRequests = [];