我正在尝试使用AJAX和间隔每5秒更新一次标签,但是实际上只有在我手动点击刷新按钮时它才起作用。在不重新加载页面的情况下,该值不会更改。
我正在使用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());
}
答案 0 :(得分:1)
因此将您的方法放在间隔之外,然后在间隔中调用它。也是微秒,所以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 ms = 1秒。
还要在OnSuccess方法中签出选择器,这是错误的。更改它,它将起作用。
也可以在这里找到更多有用的信息:https://javascript.info/settimeout-setinterval
干杯