【发布时间】:2012-02-11 11:06:15
【问题描述】:
这是我的情况:我在 ASP.NET 中有一个 UserBadge 对象,它包含 3 个字段,分别是 User 对象、Badge 对象和 boolean (isNotified),用于检查用户是否拥有收到获得徽章的通知。我在从这个WebMethod() 发送特定的UserBadge 时遇到问题:
[WebMethod()]
public static UserBadge Notify()
{
var db = new achievDb();
foreach (var uB in db.UserBadges)
{
if (System.Web.HttpContext.Current.User.Identity.Name == uB.User.UserName)
{
if (!uB.isNotified)
{
return uB;
}
}
}
return null;
}
致我的$.ajax:
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
type: "POST",
url: "../NotifCodeBehind.aspx/Notify",
data: "{}",
complete: function (result) {
if (result) {
$("#notify").jGrowl("You've unlocked a badge!", { header: 'Yay', close: function () {
$.ajax({
type: "POST",
url: "../NotifCodeBehind.aspx/Notified",
data: "{}",
success: function (ub) { DoCallback(JSON.stringify(ub)); },
error: function () { DoCallback("NOPE!") }
});
}
})
};
function DoCallback(msg) {
alert(msg);
}
}
})
})
</script>
然后在通知关闭后返回另一个WebMethod() 将isNotified boolean 设置为true:
[WebMethod()]
public static void Notified(UserBadge ub)
{
var db = new achievDb();
foreach (var userbadge in db.UserBadges)
{
if (userbadge.UserId == ub.UserId && userbadge.BadgeId == ub.UserId)
{
userbadge.isNotified = true;
db.SaveChanges();
}
}
}
问题: 我完全不知道如何将对象实际传递给 ajax,然后再返回......我已经花了大约 1.5 天的时间在互联网上浏览它,但现在,我决定来寻求帮助。我对它的了解越多,它就越让我感到困惑,而且我绝对是 jQuery/Ajax/JSON 的新手。
因此,如果您能使其尽可能简单,并将我推向正确的方向,将不胜感激!
编辑: 下面是新的 JavaScript,我以为我有,但我没有。
EDIT2:
现在解决了,我最终使用控制器而不是 WebMethods。
【问题讨论】:
标签: c# jquery asp.net ajax json