【发布时间】:2013-05-30 17:33:22
【问题描述】:
我试图在 $(location).attr() 完成时触发一个事件。例如,当 attr() 用于更改 img src 但不使用 $(location).attr() 时,我找到了许多解决方案。
你可能会问我为什么要这样做? 在我的应用程序中,我有一个将数据导出到 xml 的按钮(在后台使用 php 代码)。但是,这可能需要一些时间(几秒钟!)。因此,我想显示一个微小的“在导出过程中请稍候”,然后在生成 xlsx 并开始下载后将其删除。
这可能吗?
【问题讨论】:
-
我想你正在使用 ajax。那么为什么不在请求之前设置加载消息并在成功/完成回调中删除此消息呢?
-
如果您要更改的是实际的
window.location,如果设置了内容配置,则会重新加载页面或开始下载,如果这是您想要做的,请解释一下更好的。另外,在 jQuery 中包装位置对象通常不是很好的形式? -
$(location).attr('href', "/" + module + "s/export/index?type=" + params.type + "... 其他参数..." );然后在我的 php 中,我用 $objWriter->save('php://output'); 完成我的控制器。 (objWriter 是一个 PHPExcel 对象)让我下载文件。该位置不会重新加载页面
-
你真的应该使用
window.location.href = "/" + module + "s/export/index?type=" ...而不是 jQuery。当 Excel 文件准备好并且用户收到“下载文件”对话框时,没有任何事件可以挂钩,但是有一些方法可以通过一些技巧和 cookie 来实现,但这有点复杂,这里是 tutorial