ajax jquery帖子,需要一些初学者的微调

时间:2012-03-20 20:10:10

标签: c# jquery asp.net ajax json

我是javascript和jquery的新手,作为大学项目的一部分,我需要定期检查数据库,看看是否有变化。如果有变化,我希望该变化的结果“警告”到屏幕,以证明AJAX呼叫正在运行。我正在使用asp.net和c#。

我的方案是:用户'A'登录并在由全局列表填充的列表框中查看用户'B'。 'A'点击'B'并点击播放按钮。因为这发生'B''来自DB中User表的inviteBy列变为'A'。这就是我的问题所在,我希望有一个脚本定期访问我的UserDAO.cs类中的Web方法 - 该方法有一个查询DB中的inviteBy列的方法(已经过测试和工作)。我无法让这个工作,有人看看,看看他们是否能发现任何东西。所有的帮助将不胜感激!

DBPolling.js

    $(document).ready(function () {
function ajaxRequest() {
    $.ajax({
        type: "POST",
        url: "UserDAO.cs/queryInvitedBy",// is this correct way to input url?
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (resultData) {
            //console.log(result);// i found this in an example...needed?
            if (resultData.status == 'pending') {
                setTimeout(function () { ajaxRequest(); }, 5000); // wait 5 seconds than call ajax request again
            } else {
                var result = eval(resultData);
                alert("You have been invited" + result);
            }
        }
    });
}

});

UserDAO.cs

[WebMethod]
    public string queryInvitedBy()
    {
        // New user
        User user;

        // Open the NHibernate session
        ISession session = NHibernateHttpModule.CurrentSession;

        IQuery q = session.CreateQuery(
            "FROM User WHERE InvitedBy IS NOT NULL");
            // Assign values to the ? placehoders, by their index (0,1, etc.)

        // Make sure List is not empty
        if (q.List<User>().Count > 0)
            // set user to first item in List
            user = q.List<User>()[0];
        else
            // set user to null if none found
            user = null;

        // If no users found, returned user will be blank, otherwise the valid user
        string result = user.InvitedBy.ToString();
        return result;
    }

我一直在关注在线教程并查看类似于我的Qs以达到这个目的,所以如果我在正确的轨道上请告诉我,或者如果您发现任何问题,请提供解决方案。

2 个答案:

答案 0 :(得分:3)

调用.aspx页面,而不是后面的代码。

url: "UserDAO.aspx/queryInvitedBy",

答案 1 :(得分:0)

据我所知,你的问题是一遍又一遍地调用这个函数。

您可以在javascript中定义全局计时器变量

var timer;

并创建一个函数

function check(){
clearTimeout(timer);
//do the ajax thing here

timer=setTimeout('check()',5000);
}

现在,当你想调用函数时使用

timer=setTimeout('check()',5000);

它应该每5秒钟工作....

是你需要的吗?