MS MVC 表单 AJAXifying 技术

Posted

技术标签:

【中文标题】MS MVC 表单 AJAXifying 技术【英文标题】:MS MVC form AJAXifying techniques [closed] 【发布时间】:2010-10-30 03:03:05 【问题描述】:

我正在寻找 最优雅 的方式来 ajaxify 我的表单(使用 jQuery)。 你是怎么做到的?

【问题讨论】:

这个问题似乎是题外话,因为它是一个民意调查。 【参考方案1】:

这是我的解决方案(我认为是Progressive enhancement 解决方案),只使用没有任何插件的jQuery:

var form = $('form#YourFormId');
$(':submit', form).click(function (event) 
    event.preventDefault();
    $.post(form.attr('action'), form.serialize(),
        function(data, status) 
            if(status == 'success') 
                // your code here
            
        
    );
);

更新:

如果您的 POST 响应是“带有表单的 html”,那么试试这个:

function ajaxifyForm(form) 
    $(':submit', form).click(function (event) 
        event.preventDefault();
        $.post(form.attr('action'), form.serialize(),
            function(data, status) 
                if(status == 'success') 
                    var newForm = $(data);
                    ajaxifyForm(newForm);
                    form.after(newForm).remove();
                
            
        );
    );

【讨论】:

这看起来像我正在寻找的东西。得试试... 在“你的代码”部分中,我写了 $("form#YourFormId).html(data);。第一次点击后一切顺利。但是,在第二次点击时,它发布字段不变,绑定我的formModel 错误并得到错误的响应。:/ 我已经更新了我的答案,但没有经过测试 第二次点击它调用我的“主页/索引”并将整个页面呈现在前一个页面中。我正在尝试仅“ajaxify”登录小部件。试过“if(status=='success')form.html(data);ajaxifyForm(form);”,但是我已经提到过这种奇怪的行为。 问题出在 form.html(data) 函数中。您将您的回复插入到您现有的中。您应该删除旧表单,然后添加新表单 (form.after(newForm).remove();)【参考方案2】:

Ajaxify 你的表单...这很模糊。

如果您想异步提交表单,可以使用 $.post() 发布到单独的控制器操作。

例子:

在视图中:

$.post('<%= Url.Action("DoAjaxCall") %>', $('form').serialize(), 
function (data) 
    alert(data.Message);

, "json");

在您的控制器中:

public ActionResult DoAjaxCall(YourModel model)

    return Json(new  Message = "Your ajax call is working!" );

这至少是我在某些表单中使用的。

P.S.:我在 *** 文本编辑器中写了这个,所以它没有经过真正的测试。但作为一个大纲,它应该可以工作。

【讨论】:

【参考方案3】:

结帐JQuery plugins storage我相信你会在那里找到你需要的

【讨论】:

我找到了 jQuery Form 插件。它看起来不错,但我不知道如何正确使用它。 好的,您只需将已创建的插件包含到您的 site.master 中,并在 dom 上创建函数,该函数将在表单提交时执行您的逻辑。 plugins.jquery.com/project/form 这里有很好的样本和这里,如何在 malsup.com/jquery/form 我想简化一下。完美的解决方案就像在表单 onload 中添加 1 个简短的 JS 函数调用。你知道 - 以更紧凑和声明的方式。我不希望我的所有观点都被 我的意思是您需要在 site.master 中添加一个像这样的短行 $(':submit', form) 在这种情况下,您的所有提交都将通过 ajax 进行。另一种解决方案是创建自己的编辑模板,创建视图并向该模板添加其他脚本。在这种情况下,当您创建新视图时,您只需决定当前视图是否通过 Ajax 提交。

以上是关于MS MVC 表单 AJAXifying 技术的主要内容,如果未能解决你的问题,请参考以下文章

MVC 3:如何在通过 ajax 加载时呈现没有布局页面的视图?

spring mvc上传文件表单同时传值的问题

一文学会 Spring MVC 表单标签

asp.net mvc子页面怎么调用母版页的js事件

asp.net MVC 如何为一个视图中某个表单(Form)指定某个提交方法(如CreateRole)

springmvc表单提交日期格式,怎么搞