我是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以达到这个目的,所以如果我在正确的轨道上请告诉我,或者如果您发现任何问题,请提供解决方案。
答案 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秒钟工作....
是你需要的吗?