2012-04-17 4 views
0

Ajax 호출이 성공적으로 작동하는 페이지를 성공적으로 호출합니다. 단추를 클릭하면 PDF가 다운로드됩니다. 그러나 동일한 요청 유형과 url을 사용하여 AJAX 호출을하면 data이 반환되지만 다운로드를 요청하는 메시지는 표시되지 않습니다.AJAX 호출이 데이터를 반환하지만 다운로드를 요청하지 않습니다.

내 전화 :

$("#download-pdf").live('click', function(){ 
     $.ajax({ 
     url: $(this).parents('form').attr('action'), 
     type: 'POST', 
     success: function(data){ 
      console.log(data); 
     } 
     }); 
     return false; 
    }); 

데이터는 해석 안된 PDF 어떻게 될지로 반환됩니다. 그래서 그 정보가 있다는 것을 압니다. 단지 다운로드가 발생하지 않습니다. 어떤 속임수?

+0

을, 그냥 제출하지 그래? – sp00m

+1

또한 post를 사용한'$ .ajax'는'$ .post'로 대체 될 수 있습니다 (cf. [here] (http://api.jquery.com/jQuery) 참조). .post /)) – sp00m

+0

문제의 전적으로 잘못된 접근이기 때문에 논점의 종류는 있지만 실제로 데이터를 게시하지 않을 때 POST 요청을 사용하는 이유는 무엇입니까? '.live()'는 더 이상 사용되지 않습니다. jQuery 버전에 따라'.on()'(jQuery 1.7+)이나'.delegate()'(1.7 이전)을 사용하는 것을 고려해야합니다. –

답변

3

강제로 다운로드하는 유일한 방법은 "표준"양식 제출 방법을 사용하여 페이지를 새로 고치는 것입니다. Ajax를 사용하면 원시 출력 데이터 (PDF)를 받게되고 저장 대화 상자가 나타나지 않습니다.

3

AJAX를 사용할 때 강제로 다운로드 할 수 없습니다. 방금 양식을 제출 할 경우, 적절한 헤더를 전송하여 파일을 다운로드 할 수있는 브라우저 말할 수 Force download a pdf link using javascript/ajax/jquery

:

이 읽어주십시오 폼을 사용하는 경우

Response.Clear(); 
Response.AddHeader("content-disposition", "attachment;filename=file.pdf"); 

Response.ContentType = "application/pdf"; 
Response.WriteFile(Server.MapPath(@"~/file.pdf")); 

Response.End(); 
관련 문제