Доступ к общей переменной в WebMethod и jQuery

На моей странице ASP.Net я загружаю данные с сервера во время прокрутки с помощью jQuery AJAX. Я использую этот метод, так как загрузка данных с сервера с использованием AJAX поможет любому приложению улучшить его производительность, потому что данные, которые отображаются только на экране, загружаются в первый раз, и при необходимости с сервера загружаются дополнительные данные. пользователь прокручивает. Я использую следующий код:

$(document).ready(

        function () {
            $contentLoadTriggered = false;
            $(window).scroll(

            function () {
                if ($(window).scrollTop() >= ($("#wrapperDiv").height() - $(window).height()) && $contentLoadTriggered == false) { //here I want to check for the isReady variable in ViewState
                    $contentLoadTriggered = true;
                    $.ajax({
                        type: "POST",
                        url: "MyPage.aspx/GetDataFromServer",
                        data: "{}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        async: true,
                        cache: false,
                        success: function (msg) {
                            $("#wrapperDiv").append(msg.d);
                            $contentLoadTriggered = false;
                        },
                        error: function (x, e) {
                            alert("The call to the server side failed. " + x.responseText);
                        }
                    });
                }
            });
        });

[WebMethod]
public static string GetDataFromServer()
{
    string resp = string.Empty;
    for (int i = 1; i <= 10; i++)
    {
        resp += "<p><span>" + i + "</span> This content is dynamically appended to the existing content on scrolling.</p>";
    }

    //if (myConidition)
        //ViewState["isReady"] = true;

    return resp;
}

В какой-то момент (когда мое условие выполнено) я хочу прекратить загрузку данных с сервера. Поэтому я подумал о том, чтобы установить логическую переменную isReady в ViewState, а затем проверить значение этой переменной в jQuery, чтобы определить, следует ли вызывать WebMethod. К сожалению, я не могу использовать ViewState в WebServices, и я также не знаю, как получить доступ к ViewState в jQuery.

Что я могу использовать в качестве альтернативы ViewState, доступ к которому можно получить как из WebMethod, так и из jQuery?


person duncanportelli    schedule 26.04.2012    source источник


Ответы (1)


Лучший способ, который я могу придумать, - это отправить объект пользовательского класса или строку [];

Public class CustomClass
{
    public string HTML { get; set; }
    public bool Load  { get; set; }
}

[WebMethod()]
public static StatusViewModel  GetDataFromServer()
{
    // do work
    return CustomObject;
}

Надеюсь, поможет.

person Kamran Pervaiz    schedule 26.04.2012
comment
+1; Я собираюсь использовать string [] и передать его jQuery. Вы случайно не знаете, как получить доступ к ViewState из jQuery? - person duncanportelli; 26.04.2012
comment
Боюсь, что нет, не знаю, но вы можете перейти по этой ссылке stackoverflow.com/questions/1050902/ - person Kamran Pervaiz; 26.04.2012
comment
Не знаю, хорошая ли это практика, но я использовал скрытое поле. Спасибо за вашу помощь - person duncanportelli; 26.04.2012