2014-07-24 3 views
0

django 사이트에서 reportlab을 사용하여 PDF를 작성하고 반환합니다. 지금까지는 단일 '보고서'페이지로 제한되었지만 사용 된 장소를 확장하려고합니다. 적절한 응답을 반환하는 아약스 호출을 만들었지 만 PDF 저장 /보기 대화 상자가 나타나지 않고 대신 페이지가 새로 고침됩니다. 나는 내 아약스 호출에 성공 함수가 없기 때문에 이것이 무엇인지 알아 내지 못했다고 생각한다.AJAX에 대한 PDF 응답이 표시되지 않습니다.

JS :

function get_report(){ 
    $.ajax({ 
    url: '{{root_url}}/timecard/', 
    type: 'POST', 
    data: {'emp_id':employee_id}, 
    dataType: 'html', 
    }); 
} 

HTML :

<input id="id_report" type="submit" value="Print" onclick="get_report()"/> 

장고 :

def view_timecard(request): 
    if request.method == 'POST': 
     response = get_timecard_report(request) 
     return response 

함수 get_timecard_report 원본 페이지에서 가져온다 있다는 응답을 구성하는 기존의 기능을 이용 PDF를 열거 나 저장하기위한 대화 상자. 디버거를 사용하면 돌아 오는 응답이 제대로 작동하는 것과 같습니다.

아약스의 성공을 제대로 처리 할 필요가 있다고 생각하지만 그게 무엇인지 확신 할 수 없습니다.

+0

난 정말 이해할 수없는 파일 이름 = "somefilename.pdf" '. 버튼을 누르고 PDF 형식의 응답을 받으려면 : 정상적인 제출 버튼이하는 것과 정확히 같습니다. –

답변

0

아약스 전화를 걸었지만 응답을 처리하지 않는 것처럼 보입니다. 당신이 옳다면, 성공 함수가 없습니다. 응답을 사용하여 HTML 요소 ('frame'또는 'object'html 태그를 사용하여 HTML 페이지에 pdf를 포함시킬 수 있음)를 채우고 ajax 오류도 처리하면됩니다.

ajax({ 
url: '{{root_url}}/timecard/', 
type: 'POST', 
data: {'emp_id':employee_id}, 
dataType: 'html', 
success: function(response){ 
    if (response) 
     <get document elementid and set the inner html as the PDF response using javascript> 
    }, 
error: function(xhr,status,error){ 

if xhr.readyState == 0 || xhr.status == 0 
    return; 
else 
alert("xhr status:" + xhr.status); alert("in get_report function") 
} 
}) 

여기에보기 코드가 명확하지 않지만 첨부 파일로 PDF를 출력해야합니다.

이와 비슷한 내용 : 응답 [ 'Content-Disposition'] = '첨부 파일; 당신이 아약스 여기에 사용하려는 이유

Output PDFs with django