连续的Ajax调用返回数据不一致

时间:2011-07-28 14:11:18

标签: jquery ajax

我的任务是增强现有的C#SharePoint应用程序,该应用程序显示人员的日程安排。

我没有自由使用jQuery插件日历。我需要坚持使用当前代码,但尝试将jQuery应用于它以加快性能。当前应用程序立即执行所有计划,然后将它们绘制到表格中。问题是数据调用可能太大,页面需要永远加载。我的任务是逐个检索个人数据并逐个绘制。

目前,我正在使用jQuery 1.5延迟对象的'when'来首先填充所需的参数,然后'user'使用userids来获取用户异步调度数据。每次调用都返回一个包含两个数据表的数据集...一个包含用户信息,另一个包含用户的计划事件。麻烦的是数据回复不一致。单步执行代码时,我发现返回的用户信息并不总是与应该绑定到用户的事件数据相匹配。

正如我之前提到的,我正在使用延迟对象,在没有对象的情况下尝试过它,让uncsuccsessfully试图在每次数据调用之间添加延迟,并且我只是简单地混淆了。

不确定是否有人可以帮助我,但如果您有任何建议,我一定很感激听到他们。提前感谢任何想法。

 //  When page loads
    $(document).ready(function () {
        // The following block uses the jQuery.Deferred() object, introduced in jQuery 1.5
        // See http://api.jquery.com/category/deferred-object/
        // the object allows us to chain callbacks, **in the order specified**
        // Get date range            
        debugger;
    //GetStartDate(), GetEndDate() populates date range
    //PopulateParams() does that for remaining parameters
        $.when(GetStartDate(), GetEndDate())
        .then(function () {
            PopulateParams();
            GetUserSchedule();
        })
        .fail(function () {
            failureAlertMsg();

        })
    });



    // Returns schedule for each person listed in between selected start and end dates
    function GetUserSchedule() {
         for (var i = 0; i < arrRequests.length; i++) {
            // Ajax call to web method, passing in string
            $.ajax({
                type: "POST",
                url: "/_layouts/epas/scheduler/default.aspx/GenerateUserSchedules",
                data: arrRequests[i],   // example data: {"UserId":"6115","startDate":"\"7/1/2011\"","endDate":"\"7/31/2011\"","ddlGroupSelectedItem":"Z8OK","ddlGroupSelectedValue":"Z8OK#","ddlOrgSelectedValue":"2"}
                contentType: "application/json",
                dataType: "json",
                success: SuccessFunction,
                error: function (d) { alert('Failed' + d.responseText + '\nPlease refresh page to try again or contact administrator'); }
            })
        }
    }

    // On successful completion of call to web method, paint schedules into HTML table for each user
    function SuccessFunction(data) {            
        if (data != null && data.d != null && data.d.Temp != null) {

        // Calls a bunch of functions to paint schedule onto HTML table
        // Data contains two tables: one contains user info and the other contains rows of info for each event for user
        // at times, the user info is not the correct user or the events are not correct for user
    }   

}

0 个答案:

没有答案