[英]Getting the messages/notifications instantly without refreshing the page in asp.net
我有一个标签,上面显示数字,数字是数据库中数据的计数。 每当新数据保存在DB中时,标签中的数字应增加。 当我刷新页面时,它会增加,因为我在代码隐藏中调用了page_load上的方法。
我的想法是:
为此,我知道我应该使用AJAX,但是我找不到适合自己的用法。
您能指导我解决问题吗?
这是aspx页面上的标签:
<div id="panoramCouponBarLittleTalep">
<asp:Label ID="LabelTalepSayisiSag" ClientIDMode="Static" Text="" runat="server" />
</div>
这是page_load:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["user"] != null)
{
if (!IsPostBack)
{
SonBesGunTalepSayisi();
}
}
}
和我使用的方法:
private void SonBesGunTalepSayisi()
{
RequestProvider rP = new RequestProvider();
int talepSayisi = rP.LastFiveDaysRequestCount();
if (talepSayisi > 0)
{
LabelTalepSayisiSag.Text = talepSayisi.ToString();
}
else
{
LabelTalepSayisi.Text = "";
}
}
我将使用ASP.NET AJAX页面方法作为您的JavaScript AJAX将基于计时器调用的服务器端点; 像这样:
代码隐藏:
[WebMethod]
public static string GetRequestCount()
{
RequestProvider rP = new RequestProvider();
int talepSayisi = rP.LastFiveDaysRequestCount();
if (talepSayisi > 0)
{
return talepSayisi.ToString();
}
return "";
}
我会在您的Label
控件中添加一个CssClass
值,因为这样将使其更易于在jQuery选择器中使用,如下所示:
标记:
<div id="panoramCouponBarLittleTalep">
<asp:Label ID="LabelTalepSayisiSag" ClientIDMode="Static"
Text="" runat="server" CssClass="TheLabel" />
</div>
$(document).ready(function() {
setInterval(ajaxCall, 5000); // 5000 MS == 5 seconds
});
function ajaxCall() {
$.ajax({
type: "POST",
url: "PageName.aspx/GetRequestCount",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
// Put result of call into label
$('.TheLabel').text(result);
}
});
}
注意:显然,您可以根据需要和性能将计时器间隔值调整为更大或更小。 另外, Label
控件上的CssClass
值还避免了困扰ASP.NET服务器控件的名称修改问题。 即使您使用的是ClientIDMode="Static"
,我还是希望尽量避免在jQuery中使用服务器控件的ID,因为ASP.NET不会混淆类名。
您可以使用ASP页面方法来做到这一点:
http://www.geekzilla.co.uk/View7B75C93E-C8C9-4576-972B-2C3138DFC671.htm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.