Вот моя ситуация: у меня есть UserBadge
объект в ASP.NET, он содержит 3 поля: объект User
, объект Badge
и логическое значение
(isNotified), чтобы проверить, был ли пользователь уведомлен о получении значка. У меня возникают проблемы с отправкой определенного UserBadge
из этого WebMethod ()
:
[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
значение 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, а затем обратно ...Я провел около полутора дней в Интернете, но теперь решил обратиться за помощью. Чем больше я читаю об этом, тем больше меня это смущает, а я новичок в jQuery / Ajax / JSON.
Так что, если бы вы могли сделать это как можно проще и подтолкнуть меня в правильном направлении, это было бы очень признательно!
РЕДАКТИРОВАТЬ: Новый JavaScript ниже, думал, что он у меня есть, но нет.
РЕДАКТИРОВАТЬ2:
Теперь это решено, я в итоге использовал контроллер вместо WebMethods
.