据我们所知,您无法通过 ajax 创建文件下载。
但是,您可以提交一个表单来创建下载提示。
当用户按下按钮时,我会生成一个相当大的文件,因此我会显示“请稍候”样式的消息。
我的问题是,
如何检测表单提交何时完成,从而显示对话框?
(这是为了隐藏消息)
最佳答案
表单提交成功后进行重定向。如果重定向将命中浏览器无法显示的文件 - 它将开始下载。
在我的例子中,我从表单提交处理程序返回 JavaScript 代码,该处理程序形成小部件 eval()。该代码可能是重定向到后端刚刚生成的罚款。
也许我关于 AJAX 表单最佳实践的博客文章会有所帮助: http://agiletoolkit.org/blog/forms/
如果您想让事情变得简单,那么:
- 添加 form.onSubmit 处理程序,它应该阻止默认操作,收集表单数据并发送到服务器。您可以使用一些 jQuery ajax 提交插件。
- 服务器应该解析数据,准备文件并将文件名发送回浏览器。
- 传输完成(回调)时执行您的 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/