我想弄清楚一個AJAX調用來執行某些操作的最佳方法,然後執行一些jquery效果魔術來使它看起來像是發生了什麼。什麼是使用ASP.NET MVC和jQuery實現AJAX的最佳方式?
這是基本思想:我有一個鏈接,當用戶點擊它時,我需要更新我的模型,以表明用戶對一個項目(在服務器端)感興趣。但是,我也想淡化鏈接(這是我製作的複選框圖像),改變類並將鏈接淡入。行爲如下所示:當您對某個項目不感興趣時,鏈接看起來像是空盒子,當你將鼠標懸停在它上面時,檢查出現,當他們點擊鏈接時,鏈接將消失並返回盒中的檢查,現在當它們懸停在它上面時,檢查消失(行爲反轉)。
我的問題是鏈接似乎無法跟蹤它在哪裏(無論它處於選中狀態還是未選中狀態)。
我試過這樣做的多種方式。
實例A:
<a href="#" onclick="oncheck(this,<%= item.ID %>)" class="notchecked"></a>
<script>
function oncheck(link, itemId)
{
//the UI effects are working correctly
if ($(link).hasClass("notchecked")
{
$(link).fadeOut();
$(link).removeClass("notchecked");
$(link).addClass("checked");
$(link).fadeIn("slow");
}
{
$(link).fadeOut();
$(link).removeClass("checked");
$(link).addClass("notchecked");
$(link).fadeIn("slow");
}
//do ajax request using jquery
//I don't really care about the results right now
//This doesn't work though, it never hits my controller action
$.get("Item/ChangeCheckedStatus", { itemId: itemId });
}
</script>
我也試圖與微軟的Ajax庫做這個
例B:
<%=Ajax.ActionLink(" ",
"Item",
"ChangeCheckedStatus",
new { itemId = item.ID },
new AjaxOptions { UpdateTargetId="bogusTarget", OnSuccess = "oncheck" },
new { @class="notchecked" });
<script>
function oncheck()
{
//the UI effects are not working correctly here
if ($(this).hasClass("notchecked")
{
$(this).fadeOut();
$(this).removeClass("notchecked");
$(this).addClass("checked");
$(this).fadeIn("slow");
}
{
$(this).fadeOut();
$(this).removeClass("checked");
$(this).addClass("notchecked");
$(this).fadeIn("slow");
}
}
</script>
與MS AJAX庫,我得到控制行動,並且該項目得到更新,但是然後jquery效果不起作用。
有沒有一種更簡單的方法來做我想要完成的事情,還是我只是在這裏忽略了一些明顯的東西?
UPDATE這是控制器動作的樣子:
public string ChangeCheckedStatus(long itemId)
{
//do some stuff
return "What is going on???";
}
注:在控制器做工精細等動作,這只是這一個(這是通過AJAX使用BTW唯一的一個)。
你可以顯示具有任何屬性的操作聲明嗎?順便說一句,你應該總是用POST更新數據,而不是GET。 – 2009-09-10 14:29:37
另外,你有沒有看過Firebug Net面板或Fiddler中的服務器響應?它說什麼。 – 2009-09-10 14:30:09
@克雷格當然我會更新問題。至於POST,我打算將其更改爲POST,我只是試圖讓它工作第一= P – Joseph 2009-09-10 14:43:11