【发布时间】:2011-09-03 12:22:42
【问题描述】:
我有一个通过
向用户发送 PDF 的流程Response.BinaryWrite(pdf);
完成后,我想
Response.Redirect("Default.aspx");
问题是重定向在BinaryWrite() 完成之前触发。我知道这一点是因为我没有看到我应该下载 PDF 的弹出窗口。
如果我删除
Response.Redirect("Default.aspx");
然后我应该得到弹出窗口。所以,这里有一个竞争条件(可能与 HTTP 无连接有关)。我可以的
Thread.Sleep(5000);
但这太荒谬了。这个问题有好的解决办法吗?
我试过 AJAX。这也行不通。 Due to an issue with AJAX and popups,我必须使用解决方法
window.frames["#pdfPopup"].location.reload();
显示我的弹出窗口。
那么这段代码永远不会运行...
alert('before href');//no alert ever displays
window.location.href = "http://www.yahoo.com/";
这可能是因为我调用了 reload()。有什么想法吗?
我为框架连接了onload,但这仍然不起作用!啊。我读到 onload 不会触发包含 activeX 控件的框架,包括 PDF。我读过这个on SO 和multiple 谷歌网站。
<iframe id="pdfPopup" style="visibility:hidden;height:0px;width:0px;" onload="Redirect();"></iframe>
onload 确实会在页面加载时触发,但当我调用 reload 并将 PDF 放在那里时不会触发。所以我撞到了一堵砖墙。有人对此有任何解决方案吗?
【问题讨论】:
标签: jquery asp.net ajax race-condition