Как обновить конкретную метку с помощью Ajax?

Я пытаюсь обновить ярлык каждые 5 секунд, используя AJAX и интервал, но на самом деле это работает, только если я нажму кнопку обновления вручную. Не перезагружая страницу, значение не изменяется.

Я использую Webforms.

Сторона клиента:

JavaScript:

    setInterval(function () {
        function GetStatus() {
            $.ajax({
                type: "POST",
                url: "RunningConsolePage.aspx/GetStatus",
                data: '{name: "' + $("#<%=lblStatus.ClientID%>")[0].value + '" }',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                failure: function (response) {
                    alert(response.d);
                }
            });
        }
        function OnSuccess(response) {
            $("#<%=lblStatus.Text=GetStatus()%>")
        }
    }, 5);

HTML:

<asp:Button ID="btnQArun" Text="QA" OnClick="btnQArun_Click" CssClass="btn btn-info btnSize" OnClientClick="Confirm('QA')" runat="server" />
<asp:Label ID="lblStatus" Text="Status" runat="server"/>

Серверная сторона:

[System.Web.Services.WebMethod]
        public static string GetStatus()
        {
            Random random = new Random();
            const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            return new string(Enumerable.Repeat(chars, 11)
              .Select(s => s[random.Next(s.Length)]).ToArray());
        }

javascript,asp.net,ajax,webforms,

1

Ответов: 1


1

Поэтому поставьте свои методы вне интервала, а затем вызовите его в интервале. Также в miliseconts так 5 не означает 5 секунд, это 5 miliseconds.

<script>
    setInterval(GetStatus, 5000);

function GetStatus() {
            $.ajax({
                type: "POST",
                url: "RunningConsolePage.aspx/GetStatus",
                data: '{name: "' + $("#<%=lblStatus.ClientID%>")[0].value + '" }',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                failure: function (response) {
                    alert(response.d);
                }
            });
        }
        function OnSuccess(response) {
            $("#<%=lblStatus.ClientID%>").text(response.d);
        }
</script>

Совет: 1000 мс = 1 секунда.

Также проверьте селектор в методе OnSuccess, это было неправильно. Измените его, и он будет работать.

Также найдите более полезную информацию: https://javascript.info/settimeout-setinterval

Ура,

JavaScript, asp.net, AJAX, WebForms,
Похожие вопросы