我有一个表单,当提交(通过POST)时,告诉服务器提供PDF。由于.submit会自动刷新包含结果的页面,因此PDF会在浏览器中成功加载。目前正在运作。
但是,我希望在PDF到达后触发回调。异步等待.submit是行不通的,因为就ajax而言,.submit一旦发布就会“完成”;它不关心等待服务器。要使用回调,我需要使用其他东西,比如$ .post。
$ .post不会自动刷新带有结果的页面,虽然我可以让我的回调等待数据到达,但我无法像在浏览器中那样加载PDF。提交。
有没有办法可以模仿或强制.submit样式的页面刷新,在$ .post成功回调中加载从帖子中检索到的数据?
答案 0 :(得分:0)
jquery $ ajax回调在服务器响应之前不会返回。因此,如果您可以在服务器请求/响应周期中生成pdf文件,则可以返回一个URL,然后使用window.location在成功回调中重新加载页面。
window.location.assign('url returned in success callback data');
如果要异步生成PDF,则在服务器响应后,您可以返回生成pdf的URL。然后,客户端可以进行长轮询(通过ajax标头调用检查URL是否存在),然后在文件出现后更改窗口位置。