這裏是我的情況:我有在ASP.NET一個UserBadge
對象,它包含了3場,是一個User
對象,Badge
對象和boolean
(isNotified)檢查如果用戶已被通知獲得徽章。我是從這個WebMethod()
有發送特定UserBadge
問題:在ASP.NET得到一個複雜的對象通過的jQuery/AJAX
[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,以爲我有它,但我沒有。
編輯2: 這現在解決了,我最終使用控制器而不是WebMethods
。
嗯,就是這樣,我想到了這一點,但我不確定我能從該頁面的任何位置閱讀這些Ids。這是我的_Layout.cshtml,所以我不能通過它一個不同的模型,以達到這些ID。 – mktwo 2012-01-16 14:20:30
這是ASP.NET MVC?那麼你應該可以爲AJAX請求做模型綁定 – Shyju 2012-01-16 14:23:19
是的,這是MVC3,但是'模型綁定的Ajax請求',你的意思是我可以綁定一個模型不是整個頁面,而只是ajax位?因爲將所需的模型綁定到頁面對我來說並不是真的可用,因爲頁面期望有一個'LogOnModel'。 – mktwo 2012-01-16 14:33:57