Как обновить конкретную метку с помощью Ajax? - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь обновлять метку каждые 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());
        }

1 Ответ

0 голосов
/ 06 июля 2018

Итак, выведите ваши методы из интервала, а затем вызовите его через интервал. Также в миллисекундах, поэтому 5 не означает 5 секунд, а 5 миллисекунд.

<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

Приветствия

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