使用JQuery MVC表单发布的Ajax

时间:2013-04-25 19:25:27

标签: asp.net-mvc jquery

我是一个完整的Ajax noob,我发现自己在如何最好地处理事情方面有点迷失,我一直在寻找SO并找到一篇关于Ajax的帖子,包括这个JavaScript:

$(function () {
    $('form').submit(function () {
        if ($(this).valid()) {
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                success: function (result) {
                    $('#result').html(result);
                }
            });
        }
        return false;
    });
});

我将此合并到我的脚本文件中,用于我网站上某个页面上的表单,并很快意识到这实际上附加到所有表单,包括登录表单在内的所有表单。

我想将登录表单视为一种特殊情况,并实际执行重定向,而不是简单地将返回的HTML片段插入到页面上的元素中。

我假设用登录表单的ID替换“form”会将登录表单与“常规”表单处理流程区分开来,并且想知道对此有什么最佳实践。

你是否有像上面那样的“一般”Ajax处理程序,或者根据他们需要对响应做什么来为每个表单设置特定的JavaScript函数更好?

3 个答案:

答案 0 :(得分:0)

我倾向于保持与众不同,尽管其他人可能会有所不同。他们发布到不同的URL并对数据做不同的事情。

我通过id引用表单:

$('#myformid")

答案 1 :(得分:0)

在我看来,就像你应该已经本地化的情况包含一些通用的东西。在我看来,这样的一揽子方法并不是真正令人满意的,尤其是那些不会影响你应用程序中每个表单的东西。

要带走的真正的好处是$.ajax代码。如果需要,可以使用ajax,否则使用正式发布(默认情况下)。

使用精确的引用当然会区分应用程序中的某些表单,但这应该在视图的脚本中完成,而不是在应用程序范围内包含的一个附加脚本中。

我倾向于在我想要提供预览时使用ajax,或者如果我想在没有用户导航离开页面的情况下发布

有时在极少数情况下,我会有一个页面,通过ajax替换为一些滑动窗口,然后在系列的最后我想要重定向。在这种情况下,我将让我的控制器返回一个字符串,允许视图在ajax调用的success函数中重定向到该字符串。

答案 2 :(得分:0)

如果您只想将功能应用于除登录表单以外的所有表单,您可能希望使用不相等的选择器。

$('form[id!="loginform"]')...