代码之家  ›  专栏  ›  技术社区  ›  mare

ASP.NET MVC表单,同时支持AJAX和传统的POST

  •  2
  • mare  · 技术社区  · 15 年前

    1) 问题是我有一些不在字段中的数据,但它只是div中的文本。因为我现在是用AJAX发布的,所以我可以在发布之前通过id获取这些div的内容,并将它们包含在post中。我认为这些信息将从传统的帖子中丢失。

    一个想法是做一个 <input>

    2) 如果我决定只使用ajaxpost,我能完全摆脱表单吗?

    对于这个具体的例子,我正在构建一个内部的、按需的应用程序,它不会是面向web的(至少还没有),所以我可以选择说JS是必需的。

    2 回复  |  直到 15 年前
        1
  •  2
  •   tvanfosson    15 年前

    如果你想在没有javascript的情况下维护一个可行的站点,那么我建议你先让一个站点在没有javascript的情况下工作,然后使用javascript修改这个接口,使之成为你真正想要的启用javascript的站点。这将需要从中包含的所有输入开始 input 元素,然后使用javascript替换这些元素 div inputs 并展示了已经存在的 部门

    我认为即使在使用AJAX时也没有必要去掉表单,尽管从技术上讲没有理由这样做。但是,我喜欢做的一件事是保留表单,然后让我的submit方法从 form 标记,这样我就不需要直接在javascript中对其进行编码。您可能会发现,这使得在各种表单之间共享javascript变得更容易。

    我总是序列化请求参数,就像表单通常那样。最简单的方法是使用jQuery serialize 方法,但这只对输入有效。您还可以构造一个hash(对象中的键值对)并将其作为AJAX的数据参数。它将自动序列化以请求参数。使用其他任何东西都需要使用自己的代码而不是MVC中的模型绑定代码进行反序列化。

        2
  •  1
  •   Chris    15 年前

    我会把 div 文本到隐藏的字段-否则它将不会被一个传统的职位拿起。

    去掉这个表单,如果你的JS因为某种原因被禁用/破坏了会发生什么?即使用户启用了JS,如果(例如)JS文件没有加载,表单也无法通过AJAX发送数据。使用AJAX,但要确保可以退回到传统的表单POST。