通过jQuery更新值

时间:2012-04-16 21:59:10

标签: jquery asp.net ajax linq

我在Asp.net webform上放置了一个名为LabelTotalNumber的标签。我希望jQuery每隔一分钟更新一次值而不刷新表单。我该怎么做?

我可以在Page_Load事件中这样做一次。

var sqlResult = (From obj in db.RequestList
                 where obj.IsApproved == "Approved"
                 select obj).count();
LabelTotalNumber.text = sqlResult;

2 个答案:

答案 0 :(得分:1)

您可以使用UpdatePanel and a Timer开箱即用的Microsoft框。

如果您不喜欢Microsoft框的内容并想使用jQuery / javascript,您可以定期(使用window.setInterval方法)向ASP.NET PageMethod发送AJAX请求(在这种情况下)基本上你必须给自己一点痛苦才能阅读jQuery的documentation / tutorials并编写一些代码。

ASP.NET PageMethod:

[WebMethod]
public static int Approved()
{
    return (from obj in db.RequestList
            where obj.IsApproved == "Approved"
            select obj).Count();
}

然后每隔一分钟就用一个AJAX请求锤击这个PageMethod:

window.setInterval(function() {
    $.ajax({
        url: '/foo.aspx/Approved',
        type: 'POST',
        contentType: 'application/json',
        data: '{ }',
        success: function(result) {
            var count = result.d;
            // TODO: do something with the count returned by the server
            // like assigning it to a label or something:
            $('#someLabelId').html(count);
        }
    });
}, 60 * 1000);

答案 1 :(得分:0)

您可以使用jQuery ajax来调用可以执行数据库操作的服务器页面。 使用setInterval方法在特定时间间隔内执行脚本。

var tid = setInterval(UpdateData, 60000);
function UpdateData() {
  $.get("yourserverpage.ashx",function(data){
   $("#yourDiv").html(data)
 });
}

Assumung yourserverpage.ashx将在调用时处理您的数据库更新,而yourDiv是您要显示更新数据的div(假设yourserverpage.ashx正在返回要显示的标记。