我是AJAX的新手。我正在使用AJAX向服务器发送请求。该服务返回一个文本文件。但是,返回数据时没有下载框出现。返回文件的其余服务如下:
@Path("/examples") public class ExampleCodesRest { @POST @Path("/getcode") @Produces(MediaType.TEXT_PLAIN) public Response getCodes(@Context ServletContext context){ String in=context.getRealPath("/WEB-INF/reports.jrxml"); File file=new File(in); ResponseBuilder response = Response.ok((Object) file); response.header("Content-Disposition", "attachment; filename=\"file_from_server.log\""); return response.build(); } }
我的AJAX调用如下:
$('a#link').click(function(event){ event.preventDefault(); $.ajax({ url: '/reports/rest/examples/getcode', type: 'POST' }); });
没有AJAX,文件下载成功。使用AJAX时,它不会下载文件。请咨询。
建议很简单:您不能通过AJAX下载文件-这是一项安全策略。我的意思是您可以下载数据,但不能从JavaScript端将其保存到磁盘。
如果您想点击下载文件,则只需将其添加href到a标签中即可。或使用文件的打开一个新窗口URL。
href
a
URL