【问题标题】:With JavaScript and AJAX, do I still need the HTML <form> tag and do I still need to submit forms to the server using a "submit" button?使用 JavaScript 和 AJAX,我是否仍需要 HTML <form> 标签,是否仍需要使用“提交”按钮向服务器提交表单?
【发布时间】:2011-07-23 04:06:20
【问题描述】:

当我学习 HTML 时,CGI 是王道,与服务器交互的正确方法是将 &lt;input&gt; 标签放在 &lt;form&gt; 标签内。当用户按下“提交”按钮时,会向服务器发送 HTTP GET 或 HTTP POST 消息,并使用服务器上 CGI 程序返回的 HTML 代码刷新浏览器。

现在我又开始做网络工作了,我一直在学习 JavaScript 和 jQuery。既然jQuery可以拦截clickkeypressfocusout等事件,并且可以读取$.ajax()$.getJSON()的数据,那还需要&lt;form&gt;标签吗?

如果我想支持关闭 JavaScript 的用户,也许“真实表单”仍然是必要的?

【问题讨论】:

  • 您应该将 JavaScript 视为表示层的“额外”,而不是 HTML 标准的替代品。是的,您可以使用 JavaScript 行为代替 DOM 行为。但是,就像在 45 英里/小时的区域内可以以 90 英里/小时的速度行驶一样,您真的不应该这样做。有关更多信息,请参阅关于 Unobtrusive JavaScript 的 wiki 文章:en.wikipedia.org/wiki/Unobtrusive_JavaScript
  • 如果我能总结到目前为止的答案,听起来
    标签只有在序列化表单中的元素时才需要。但更深入地思考,GMail 和谷歌地图等“单页”网站与 Amazon.com 等多页网站之间似乎存在差异。我可以看到为多页网站使用表单的价值,但是“单页”网站可能使用纯 JavaScript 而没有表单会更好,尽管只要提交是使用 JavaScript 异步完成的,使用表单可能不会有什么坏处.

标签: javascript jquery html ajax forms


【解决方案1】:

如果您使用 ajax,只要您没有任何直接的帖子或获取,则不需要表单标签。但是,它仍然是很好的 html 设计。

【讨论】:

    【解决方案2】:

    表单仍然可以帮助您,但简短的回答是否定的,不是真的。

    如果您有一组与某个 AJAX 请求相关的输入,那么出于验证/序列化目的,将它们保留在自己的形式中可能会更容易。例如:

    $.ajax({
        url: 'ajax/test.html',
        dataType: 'json',
        method: 'POST',
        content: $('form#login_form').serialize(), // <-- Serialize elements only in
        success: function(data) {                  //     the login_form container.
            $('.result').html(data);
        }
    });
    

    根据您的要求,您可能需要保留您的表单,以便为关闭 Javascript 的用户提供良好的降级效果。您仍然需要提交表单,因此设置并准备好表单是个好主意。

    【讨论】:

      【解决方案3】:

      您可以同时提交或不提交。它可以取决于您想要收听哪个表单元素以进行更改。但是你可以这样做只是一个例子:

      <SELECT NAME="tree" onchange="doSomething( someVar );">
      

      但同样,这取决于您要操作页面的哪个元素。

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 1970-01-01
        • 2013-11-23
        • 2017-01-24
        • 1970-01-01
        • 2019-08-19
        • 1970-01-01
        • 1970-01-01
        • 2018-07-03
        相关资源
        最近更新 更多