【发布时间】:2018-10-16 09:31:18
【问题描述】:
我想使用 javascript/jquery 从服务器下载文件。
当按下按钮时,服务器会响应我要下载的 url 文件。
按钮:
<a class="btn btn-primary" id="exportInvoice">Export XML</a>
ajax 请求:
$('#exportInvoice').on('click', function () {
$.ajax({
type: 'POST',
dataType: 'json',
url: '{{ route('export-xml') }}',
data: {dateRange: dateRange},
success: function (resp) {
if(resp.error){
// error
alert(resp.msg);
} else {
// success
alert(resp.msg);
window.location=resp.url;
}
}
});
})
我正在使用 laravel 5.7 Blade 生成 url。
当我单击按钮时,文件将打开而不是下载(因为 window.location=resp.url;
我在想...在进行 ajax 调用之后(当成功响应时)...将下载属性和 href 设置为链接...但是我需要再次调用 click 事件来下载文件。
我怎样才能下载文件而不是打开???
【问题讨论】:
-
AJAX 是一个 background 请求,您不能从那里直接触发下载对话框。有一些解决方法,但在这种情况下,不使用 AJAX 可能更有意义。如果您需要向服务器提交 POST 数据以使其生成此下载资源,则可以通过使用 JS 提交隐藏表单来实现。
-
感谢@misorude 获取信息;)(使用隐藏表单)
标签: javascript jquery