Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE10下载问题与两个javascript表单提交_Javascript_Asp Classic_Internet Explorer 10 - Fatal编程技术网

IE10下载问题与两个javascript表单提交

IE10下载问题与两个javascript表单提交,javascript,asp-classic,internet-explorer-10,Javascript,Asp Classic,Internet Explorer 10,所以我有一个独特的问题,我相信,我不知道什么是最好的解决办法。我有一些遗留代码,过去在所有浏览器中都运行良好,但在IE10中突然失效。我会尽我所能解释它是如何工作的,我认为是什么问题 我在一个网上银行页面上工作,该页面有一个选项供用户下载其帐户历史记录,如QIF、CSV等。该页面使用经典ASP和VB服务器代码编写。该功能的工作方式是用户单击下载按钮,该按钮将使用一系列可单击的图像重新加载页面,每种下载文件类型对应一个图像。根据他们单击的表单,调用一个javascript函数,该函数在页面上提交一

所以我有一个独特的问题,我相信,我不知道什么是最好的解决办法。我有一些遗留代码,过去在所有浏览器中都运行良好,但在IE10中突然失效。我会尽我所能解释它是如何工作的,我认为是什么问题

我在一个网上银行页面上工作,该页面有一个选项供用户下载其帐户历史记录,如QIF、CSV等。该页面使用经典ASP和VB服务器代码编写。该功能的工作方式是用户单击下载按钮,该按钮将使用一系列可单击的图像重新加载页面,每种下载文件类型对应一个图像。根据他们单击的表单,调用一个javascript函数,该函数在页面上提交一个隐藏表单,然后提交第二个隐藏表单,以便再次使用帐户历史和过滤器重新加载原始视图。第一个表单操作调用一个asp页面,该页面生成文件并将其作为响应附件返回,该附件通常会提示浏览器下载文件,然后第二个提交操作只是包含历史详细信息的原始asp页面。在IE10中,该文件永远不会下载,而是会进行一些处理,第二次提交(重新加载历史记录)会顺利完成

我在查找中发现,如果我注释掉提交第二个表单的javascript行,那么下载工作正常,所以我认为发生的是提交是异步进行的,重定向在下载之前返回。或者类似的。我不确定。我正试图找出一个解决办法,而不必完全重写该功能。有什么想法吗

编辑:

发生这一切的页面是accountDetails.asp

javascript--

下载表格--


完成的表格--



因此,DownloadForm调用一个单独的asp页面来获取下载文件,然后完成的表单发布到用户已经在的页面,以重新加载帐户历史记录详细信息,而不是显示下载图像按钮。首先,我意识到这是一种非常糟糕的做法;这是由正在学习的人编写的遗留代码,数百个客户已经在生产中使用,因此我不能在没有老板和所有客户的重大项目批准的情况下重写它。

我还没有测试过这些想法中的任何一个,但是如果你想保持当前的体系结构,您可以尝试检测文件何时已完全下载,然后导航离开

查看,了解如何检测浏览器何时下载了文件


另一个想法是放弃第一次表单提交,而选择一个简单的
a
链接,该链接带有
href
属性,指向您的文件下载链接,使用查询字符串参数传递附加数据。如果您在没有它的情况下仍然遇到同样的问题,您可能还想在链接上添加
taget=“\u blank”

下面是我们最后得出的答案。上面的javascript本来就不应该工作,事实上,我们在测试后发现,它在很多地方都不工作,但我们关心的部分(文件下载)一直在工作。事实证明,直到IE10,所有的浏览器都足够聪明,知道你不应该以这种方式提交两个表单,最后他们忽略了第二个提交。然而IE10正在处理它们,重定向在文件下载之前返回。因为我们不关心自动重定向,所以我们只是去掉了提交,而是在完成的表单中添加了一个提交按钮,这样用户就可以手动返回到以前的视图

固定Javascript--

固定完成形式

<form name="Finished" id="Finished" action="accountDetails.asp" method="post">
    <!-- a bunch of input type="hidden" elements -->
    <input type="submit" value="Return to Account Details" />
</form>


虽然您已经解释过了,但不太清楚。。。“隐藏”表单有什么用?表单允许用户输入数据并将数据发送到服务器。如果它是隐藏的,最好处理所有信息服务器端并使用会话…您是否可以选择编辑“具有历史详细信息的原始asp页面”-您可以简单地移动调用asp页面的javascript,以生成文件并将其作为响应附件返回到“具有历史详细信息的原始asp页面”-让它成为所有其他事情解决后运行的最后一件事。Thanh Trung,所谓隐藏形式,我指的是页面上所有元素都隐藏的形式。表单不仅用于收集用户的输入,还可以用于将数据发布到服务器.G Stoynev,这可能会起作用,但不幸的是,用这种方式修复会非常麻烦。下载asp页面中有很多条件处理。
<form name="DownloadForm" id="DownloadForm" action="downloadofx.asp" method="post">
    <!-- a bunch of input type="hidden" elements -->
</form>
<form name="Finished " id="Finished " action="accountDetails.asp" method="post">
    <!-- a bunch of input type="hidden" elements -->
</form>
function SetOFX(type){
    // There is some code that does conditional handling of the @type parameter
    document.forms.DownloadForm.submit();
    return false
}
<form name="Finished" id="Finished" action="accountDetails.asp" method="post">
    <!-- a bunch of input type="hidden" elements -->
    <input type="submit" value="Return to Account Details" />
</form>