2

我是一个完整的 Ajax 菜鸟,我发现自己对如何最好地处理事情有点迷失,我一直在查看 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 替换“表单”会将登录表单与“通用”表单处理过程区分开来,并且想知道对此可接受的最佳实践是什么。

您是否有像上面那样的“通用”Ajax 处理程序,或者根据需要对响应执行的操作为每个表单提供特定的 JavaScript 函数是否更好?

4

3 回答 3

0

我倾向于将我的分开,尽管其他人可能会做不同的事情。他们发布到不同的 URL 并对数据做不同的事情。

我通过 id 引用表格:

$('#myformid")
于 2013-04-25T19:27:55.283 回答
0

在我看来,您在本应本地化的情况下包含了一些通用的内容。在我看来,像这样的一揽子方法并不是真正可取的,尤其是对于会影响应用程序中每个表单的东西。

真正要带走的是$.ajax代码。需要时使用 ajax,否则使用正式发布(这是默认设置)。

使用精确的引用当然会区分应用程序中的某些形式,但这是应该在视图脚本中完成的事情,而不是在应用程序范围内包含的一个总括脚本中。

我倾向于做的是在我想提供预览时使用 ajax,或者如果我想在用户离开页面的情况下发布。

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

于 2013-04-25T19:33:37.917 回答
0

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

$('form[id!="loginform"]')...
于 2013-04-25T19:35:19.520 回答