2010-08-06 34 views
1

我想弄清楚什么是最好的方法将处理表单提交涉及到更新数据库记录和生成/下载CSV文件,重定向到原来的调用页面之前。我看过帖子说JavaScript是处理这个问题的方法之一,但是你会推荐什么样的好习惯?生成/下载CSV和重定向

这里是基本设置:

用户检查一组复选框应在数据库进行更新,并以CSV格式下载的。表单提交表单处理脚本,它更新数据库并跟随所有更新,回应CSV内容(使用内容处置和所有必要的标题) - 这一切都很好,但我还需要将用户返回到原始页面,更新已完成。这可能吗?

+0

好问题。从我+1。我正在考虑它... – Kangkan 2010-08-06 08:48:45

回答

1

您需要在更新db记录的脚本中设置一个会话变量,告诉下一页加载时,您想要将CSV文件发送给用户;然后在包含记录列表(原始页面)的页面中,检查是否设置了该会话变量。如果已设置,则会将用户重定向到生成CSV的页面(包含内容处置等)

重定向到强制下载用户的页面(通过内容处置附件)不会将浏览器远离原始页面,因此即使在用户获得CSV文件的下载弹出窗口后,他/她仍将保留在原始页面上。

+0

感谢reko_t - 这是有道理的,并且不需要javascript,我不想涉足应用程序代码。 – kenny99 2010-08-06 09:00:00

+0

实际上,您可能需要使用JS重定向,因为在向浏览器发送任何内容之前,必须先使用PHP发送“Location”标头;因此如果使用PHP重定向到CSV文件,则无法呈现实际页面。 – 2010-08-06 09:07:55