Последовательные Ajax-вызовы возвращают данные непоследовательно - PullRequest
1 голос
/ 28 июля 2011

У меня есть задача улучшить существующее приложение C # SharePoint, которое отображает расписания для персонала.

У меня нет свободы использовать календарь плагинов jQuery.Мне нужно придерживаться текущего кода, но попытаться применить к нему jQuery, чтобы ускорить производительность.Текущее приложение возвращает все графики сразу, а затем рисует их на столе.Проблема в том, что вызов данных может быть слишком большим, и страница загружается вечно.Моя задача состоит в том, чтобы получать данные для отдельных лиц по одному и рисовать их один за другим.

В настоящее время я использую отложенный объект jQuery 1.5 «когда», чтобы сначала заполнить необходимые параметры, а затем «потом» с помощьюuserids получают данные о расписании пользователей асинхронно.Каждый вызов возвращает набор данных, содержащий две таблицы данных ... один с информацией о пользователе, а другой с запланированными событиями пользователя.Проблема в том, что данные возвращаются непоследовательно.При просмотре кода я вижу, что возвращаемая информация о пользователе не всегда соответствует данным события, которые должны быть привязаны к пользователю.

Как я упоминал ранее, я использую отложенный объект, пробовал его без объекта, безуспешно пытался добавить задержку между каждым вызовом данных, и я просто запутался.

Не уверен, что кто-нибудь может мне помочь, но если у вас есть предложения, я, безусловно, был бы рад услышать их.Заранее спасибо за любые идеи.

 //  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
    }   

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...