请在标记为重复之前阅读问题。我正在尝试通过使用 Javascript 重定向到我的 ASP.NET MVC3 项目中的控制器操作来下载文件。它在 Firefox 和 IE8 中完美运行。这是我的 Javascript 代码:
<script type="text/javascript">
$(function(){
$(".pdf").click(function(e) {
e.preventDefault();
$.post("@Url.Action("PDF","Helper")", {id : @Model.ID} ,function(data){
if(data.message == "File not found.") {
alert(data.message);
} else {
location.href = '@Url.Action("PDF", "Helper", new { id = Model.ID })';
}
});
});
});
</script>
这是我尝试过的:
我添加
return false;
了以下所有内容我将行更改为:
window.location.href = "../../Helper/PDF/@Model.ID";
我试过
window.location
了我将相对链接更改为完整链接
试过没有
window
试过:
setTimeout(function() { document.location.href = '@Url.Action("PDF", "Helper", new { id = Model.ID })' },500);
我添加了这一行:
window.event.returnValue = false;
它给出了错误“window.event 未定义”。我用
e
.我改写了“ http://www.google.com ”,但也没有用。但是,它在单独的 html 文件中工作,仅包含
location.href = "http://www.google.com";
.
所有这些都适用于 IE8 和 Firefox,但不适用于 Chrome。我能做些什么来解决这个问题?
编辑:这是生成的脚本:
$(function(){
$(".pdf").click(function(e) {
e.preventDefault();
$.post("/Helper/PDF", {id : 130405002} ,function(data){
if(data.message == "File not found.") {
alert(data.message);
} else {
location.href = '/Helper/PDF/130405002';
}
});
});
});
这是生成的 HTML,我在其中调用该函数:
<input class="pdf" type="button" value="Download File" />
调试操作我得到了这些结果;在控制台状态为“失败”。Type
正如预期的那样是“应用程序/pdf”并且Size
是198 kb,它是文件大小。方法是POST
。
这是我的控制台输出: