Javascript обратный отсчет asp. net код за кодом - PullRequest
0 голосов
/ 29 апреля 2020

При запуске default.aspx мне нужно вызвать функцию поиска кода asp. net (int count). При первом вызове функции int count должен быть равен 5. Если функция возвращает True, функция не должна запускаться снова.

Если функция возвращает false, снова запустите функцию с count = 4. Если она все еще возвращает false, запустите функцию еще раз с count = 3. Делайте это до count = 0. Между каждым должно быть 1 секунда Время выполнения функций.

Есть ли умный способ решить эту проблему с помощью jacascript в default.aspx?


default.aspx

Javascript here...

<asp:Literal runat="server" id="litStatus" />

default.aspx.cs

protected bool Search(int count)
{
    bool status = false;

    if (count > 0)
    {
        if (Something....)
        {
            litStatus.Text = "Found";
            status = true;
        }
        else
        {
            litStatus.Text = string.Format("Please wait ({0})...", count);
        }
    }
    else
    {
        litStatus.Text = "Not found";
    }
    return status;
}

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

На основании вашего ответа я сделал новый код, как показано ниже. При вызове SendReceipt (5) для lbl.ClientID правильно установлено значение 5 (OnSuccess). Но код больше не запускается при вызове setTimeout (SendReceipt (num), 1000);

Есть идеи, почему SendReceipt (num) не запускается при вызове в OnSuccess?

<script type = "text/javascript">

    var SendReceipt = function (count) {
        var data = JSON.stringify({ count: count });

        $.ajax({
            type: "POST",
            url: "Accepted.aspx/Receipt",
            contentType: "application/json; charset=utf-8",
            data: data,
            dataType: "json",
            success: OnSuccess,
            error: OnError

        });
    };

    function OnSuccess(response) {

        var num = response.d;
        $("#<%= lbl.ClientID %>").text(num);

        num = num - 1;

        if (num > 0) {
            setTimeout(SendReceipt(num), 1000);
        }

        if (num < 1) {
            alert(num);
        }
    };
    function OnError(response) {
        $("#<%= lbl.ClientID %>").text("Error occured");
    };

    SendReceipt(5);

</script>

[System.Web.Services.WebMethod]
public static int Receipt(int count)
{
    return count;
}
0 голосов
/ 29 апреля 2020

Сначала измените функцию поиска на WebMethod

   [WebMethod]
    public static object Search(int count)
    {
        bool status = false;

        if (count > 0)
        {
            if (count % 2 == 0)
            {
                return new { Result = true, StatusText = "Found" };
            }
            else
            {
                return new { Result = false, StatusText = string.Format("Please wait ({0})...", count) }; 
            }
        }
        else
        {
            return new { Result = false, StatusText = "Not found" };

        } 
    }

, измените режим идентификатора:

 <asp:Literal runat="server" ClientIDMode="Static" id="litStatus" />

, затем вызовите веб-метод, используя Jquery

   <script>  
        let count = 5;
     var   callSearch = function () {
            var Data = JSON.stringify({ count: count });

            $.ajax({

                url: "/Default.aspx/Search",
                data: Data,
                type: "POST",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (response) {
$('#litStatus'').text(response.d.StatusText );
                    if (!response.d.Result) {
                        --count;
                        if (!count==0) { 
                            setTimeout(callSearch, 1000);
                        }
                    } else {
                        alert(response.d);
                    }
                }
            });
        }
        callSearch()

    </script>

и вы сделали .. надеюсь, мой ответ поможет вам

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