2012-07-26 66 views
2

我有一个页面,用户可以在窗体上选择一些选项,表单提交事件通过.AJAX将这些数据发布到PHP页面,并将文件写入服务器,PHP页面然后返回文件名,我使用jquery.Download提示用户保存文件。JQuery AJAX文件在IE8中下载,显示黄色安全栏

这在FF和Chrome中很完美,但我在IE中收到了令人恐惧的黄色信息栏。更糟糕的是,如果我的用户从信息栏中选择“仍然下载”,则页面只会刷新,而不会实际提示用户下载文件。

我已经做了一些搜索Stackoverflow,并没有出现这个问题已被回答。

回答

2

由于用户启动的浏览器事件与程序启动的浏览器事件之间的定义不同,您可以看到这一点。认为被解雇作为jQuery的那个事件绑定到操作的结果一般事件,即

$("#myElement").click(
    function() { 
     $.ajax(...); 
    } 
); 

通过编程的方式开始试图通过一个jQuery .click()事件绑定到打开一个新标签时,你会看到这个相同的症状您可点击的链接等

一个可能的解决办法,以您的问题是使用在你的HTML代码的事件属性调用一个JS函数,其中的AJAX调用即

<script type="text/javascript"> 

function submitAndDownload() { 
    $.ajax(...); //form submit 
    $.ajax(...); //download file 
} 

</script> 

<button onClick="submitAndDownload();"></button> 

这样的浏览器发出C该事件是用户发起的。您当然可以将您的下载ajax请求嵌套在表单提交ajax请求的正文中。这将取决于你需要做什么。不过,如果你在套接字中嵌入了其他的Ajax调用,那么你可能会发现套接字中有一些不一致的情况。

+0

谢谢,这真的很有帮助。那么你的意思是实际上把我的提交按钮上的onClick与使用提交事件处理程序? – 2012-07-26 23:52:12

+1

您的ajax调用究竟是如何启动的?你能提供一些代码吗?这种方法将取决于你需要做什么......即事件序列等。 – travega 2012-07-26 23:55:00

+0

用代码更新了原来的帖子,谢谢! – 2012-07-27 00:00:19