【发布时间】:2015-02-10 12:13:16
【问题描述】:
我正在使用 iframe 通过 AJAX 请求从服务器下载 excel 文件。每次单击按钮时,服务器都会在大约半分钟内创建一个 excel 文件 并将 url 发送回客户端。我在 iframe 的 "src" 属性中设置 url 的值
$("#ExportExcelFrame").attr('src', url);
即使文件存在并且可以从生成的 URL 访问,客户端也会抛出 404 错误。
每当我对文件名进行硬编码(使用一些预先存在的文件的文件名)以消除设置工作和下载 excel 文件的处理延迟时。
我尝试过更改ajax请求的超时时间无济于事
$.ajaxSetup({
timeout: 120000 //Time in milliseconds
});
我们将不胜感激任何建议。
ajax 调用
jQuery.ajax({
type: 'GET',
url: 'Controller',
data: {type: param, StartDate: StartDate, EndDate: EndDate, DateType:dateType,ResEstmBean: JSON.stringify(ResourceEstmBean)},
beforeSend: function () {
$.blockUI({message: message, css: messageCss});
},
success: function (data)
{
var fileName = data;
var url = "http://localhost:8080/WebApp/" + fileName;
$("#ExportExcelFrame").attr('src', url);
$.unblockUI();
},
timeout: 300000,
error: function () {
$.unblockUI();
showErrorAlert();
}
});
【问题讨论】:
-
您是否将 iframe 的
src设置为 AJAX 成功功能的一部分? -
@sideroxylon : 是的。"ExportExcelFrame" 是 iframe 的 id。当我对 servlet 生成的文件名(url)进行硬编码以避免处理时间时,它工作正常。
-
好的。看起来代码在收到 excel 文件的 URL 之前试图填充 iframe - 但如果您将 src 作为成功函数的一部分注入(在 AJAX 进程完成之后),那么就不是这样了。你能发布你的 AJAX 函数吗?
-
@sideroxylon:我已经添加了ajax调用代码
-
当我在浏览器中检查 iframe 时,“src”属性填充了正确的 url 值。