成功POST后显示jQuery fadein

时间:2011-01-20 21:31:25

标签: jquery ajax asp.net-mvc-2

当用户在表单中保存数据时,我试图显示以下div(通过fadeIn / fadeOut)。

// Display a notification if the save is successful.
$('<div class="save-alert">The current scenario has been saved.</div>')
    .insertAfter($('#main'))
    .fadeIn('slow')
    .animate({ opacity: 1.0 }, 3000)
    .fadeOut('slow', function () {
    $(this).remove();
});

目前,我使用Html.BeginForm帮助器提交表单。因此,我的整个页面都被发布了,我无法显示上述通知。我意识到我可以使用Ajax.BeginForm,但后来遇到其他问题(即在保存场景后无法执行return RedirectToAction("Index", new { id = scenario.ScenarioID });)。

有人对我可以尝试做的其他事情有任何建议吗?

4 个答案:

答案 0 :(得分:0)

我认为您应该使用jquery.post()来提供后台帖子,以防止重新加载该页面。

http://api.jquery.com/jQuery.post/

答案 1 :(得分:0)

好吧,我只是拒绝提交,并通过AJAX进行:

$('#form').submit(function()
{
  return false;

  $.post('test.php', $(this).serialize(), function(data)
  {
    //Do your stuff. Data is the POST response data.
  });
});
祝你好运!

答案 2 :(得分:0)

返回URL,并在客户端重定向。您可以使用JsonResult或其他来将MVC中的数据发送回客户端。

答案 3 :(得分:0)

我假设你想避免走ajax路线。如果是这样,只需将消息字符串放在cookie中并测试视图中是否存在消息。如果有消息,请显示它。由于它在cookie中,即使您在处理成功的帖子后重定向,也可以检索该消息。确保在显示消息后清除cookie!

我们已经在我的公司正式化了这个过程并将其称为“Flash”(就像Ruby on Rails曾经或者可能仍然如此)。

理想情况下,您可以将消息设置,检索和显示逻辑包装到帮助程序类中,以从您的视图中抽象其实现。这样你就可以使用cookies,viewdata甚至会话值,你的视图和控制器也不必改变行为。