php - 使用jquery检测表单提交完成

标签 php jquery ajax forms

据我们所知,您无法通过 ajax 创建文件下载。

但是,您可以提交一个表单来创建下载提示。

当用户按下按钮时,我会生成一个相当大的文件,因此我会显示“请稍候”样式的消息。

我的问题是,

如何检测表单提交何时完成,从而显示对话框?

(这是为了隐藏消息)

最佳答案

表单提交成功后进行重定向。如果重定向将命中浏览器无法显示的文件 - 它将开始下载。

在我的例子中,我从表单提交处理程序返回 JavaScript 代码,该处理程序形成小部件 eval()。该代码可能是重定向到后端刚刚生成的罚款。

也许我关于 AJAX 表单最佳实践的博客文章会有所帮助: http://agiletoolkit.org/blog/forms/

如果您想让事情变得简单,那么:

  1. 添加 form.onSubmit 处理程序,它应该阻止默认操作,收集表单数据并发送到服务器。您可以使用一些 jQuery ajax 提交插件。
  2. 服务器应该解析数据,准备文件并将文件名发送回浏览器。
  3. 传输完成(回调)时执行您的 JS 代码,并通过 document.location 重定向到文件。

Agile Toolkit就这么简单:

$f=$p->add('MyForm');
if($f->isSubmitted()){
    $f->js()->univ()->location(prepare_file($f->getAllData()))->execute();
}

关于php - 使用jquery检测表单提交完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5546173/

相关文章:

php - 报告了不同的 php 版本

javascript - JQuery dataTable 不适用于 haml - Ruby - (sinatra)

php - 如何使用 jQuery 获取上传输入的 "value"

javascript - jstree、json、ajax : Recursive Search and Select

php - 我想在我的角色扮演游戏上创建股票市场。对公式有什么想法吗?

php - Laravel - fatal error : Uncaught Error: Class 'Auth' not found

php - 如何在 php 标签之间使用 html5 显示带有 href 标签的按钮?

Javascript 将 HTML 和 css 内容作为字符串返回,但不返回 javascript

javascript - jquery:在 Chrome 中用未转义的 html 填充文本区域

php - jquery从数据库中填充多个下拉列表