【问题标题】:Event when form submittion ends表单提交结束时的事件
【发布时间】:2012-12-22 13:36:07
【问题描述】:

我有这个:

<form id="import_form" method="post" enctype="multipart/form-data" action="/Blah/Blah">
    <input type="file" id="fileUpload" name="fileUpload"/>
    <input type="submit" name="submit" value="Import"/>
</form>

$('#import_form').submit(function () {
    ...
});

这里是c#方法:

[AcceptVerbs(HttpVerbs.Post)]
public string Blah(HttpPostedFileBase fileUpload, FormCollection form)
{ ... }

我希望在 Blah 完成执行 javacript 代码时开始执行。这该怎么做?
提交事件在它之前被调用。

【问题讨论】:

  • 表单如何提交? AJAX 还是传统的?
  • 表单定义有action="/Blah/Blah"。问题中已说明。
  • 除非您使用 AJAX 提交,否则您需要在操作文件中运行 post submit 代码。
  • @charlietfl 什么是提交后代码?

标签: c# javascript jquery


【解决方案1】:

这取决于表单的提交方式。

如果您通过 AJAX 提交表单,那么您可以在处理程序中执行一些 JavaScript 以获取响应。但是,鉴于有一个 submit 按钮,我假设目前您不是通过 AJAX 执行此操作,而是将整个页面发布到服务器并呈现响应。

在这种情况下,要在表单发布后执行一些 JavaScript,您需要在来自服务器的响应中呈现该 JavaScript 作为下一页的一部分。当服务器构建视图时,在该视图中包含您要执行的 JavaScript。

请记住网络的请求/响应性质。当服务器上的某些东西执行时,客户端不知道它并与它断开连接。任何服务器端处理的最终结果都应该是对客户端的 HTTP 响应。如果提交表单或单击链接或导致页面重新加载的任何内容,该响应将以新页面(视图)的形式出现。因此,在服务器端处理之后您想要在客户端上执行的任何操作都需要作为响应的一部分发生。

编辑:我刚刚注意到Blah 正在返回一个string。这对你有用吗?表单提交结果如何出现在新视图中?还是我不知道 ASP.NET MVC 中的某个功能?

【讨论】:

    【解决方案2】:

    这就是我最后所做的。

    我的表单返回与调用它的视图完全相同的视图。

    我在 Blah 方法中添加了一个 ViewData。

    在视图中,在 $(function()) 事件中,我检查 ViewData 是否有值,然后执行 javascript 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-19
      • 2016-08-30
      • 2013-03-18
      • 2016-02-18
      • 2021-07-07
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      相关资源
      最近更新 更多