Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX调用返回数据,但不提示下载_Javascript_Jquery - Fatal编程技术网

Javascript 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

我有一个ajax调用,它成功地调用了一个本身工作正常的页面。你点击按钮,一个PDF下载。但是,当我使用相同的请求类型和url进行AJAX调用时,会返回
数据
,但不会提示下载

我的电话:

    $("#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的包装器是的,但这更容易阅读,不是吗?:)