Javascript AJAX调用返回数据,但不提示下载
我有一个ajax调用,它成功地调用了一个本身工作正常的页面。你点击按钮,一个PDF下载。但是,当我使用相同的请求类型和url进行AJAX调用时,会返回Javascript AJAX调用返回数据,但不提示下载,javascript,jquery,Javascript,Jquery,我有一个ajax调用,它成功地调用了一个本身工作正常的页面。你点击按钮,一个PDF下载。但是,当我使用相同的请求类型和url进行AJAX调用时,会返回数据,但不会提示下载 我的电话: $("#download-pdf").live('click', function(){ $.ajax({ url: $(this).parents('form').attr('action'), type: 'POST', success: fu
数据
,但不会提示下载
我的电话:
$("#download-pdf").live('click', function(){
$.ajax({
url: $(this).parents('form').attr('action'),
type: 'POST',
success: function(data){
console.log(data);
}
});
return false;
});
数据将以未分析的PDF格式返回。所以我知道信息就在那里。这不会导致下载。有什么窍门吗?强制下载的唯一方法是使用“标准”表单提交方法刷新页面。使用Ajax,您将收到原始输出数据(PDF),并且不会弹出任何保存对话框使用Ajax时不可能强制下载 请阅读: 如果您只需提交表单,则可以通过发送适当的标题通知浏览器下载文件:
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=file.pdf");
Response.ContentType = "application/pdf";
Response.WriteFile(Server.MapPath(@"~/file.pdf"));
Response.End();
如果你使用的是表格,为什么不直接提交呢<代码>$('myform')。提交()代码>此外,使用post的
$.ajax
可以被$.post
(cf.)所取代,这是一个没有实际意义的观点,因为这是解决问题的完全错误的方法,但是:当您实际上没有发布任何数据时,为什么要使用post请求?此外,<代码> .LIVER()/CODE被禁止-应该考虑使用<代码> .[()] />代码(jQuery 1.7 +)或<代码>委托()>代码>(在1.7之前),这取决于您的JQuery的版本.@ SP0M对于这样一个简单的POST请求,这是真的。但是,这两个函数之间没有功能上的区别-$。post()
只是调用$.ajax()
@AnthonyGrist的包装器是的,但这更容易阅读,不是吗?:)