我想弄清楚一个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