Получение сложного объекта через jQuery / ajax в ASP.NET

Вот моя ситуация: у меня есть 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 .

5
задан Zachary Schuessler 5 July 2012 в 20:50
поделиться