Tôi nhận được 2 ngày, ngày bắt đầu và ngày kết thúc, thông qua AJAX. Tôi xử lý dữ liệu b/w 2 ngày đó, tạo một báo cáo và sau đó trả về một HttpResponse. Báo cáo PDF hiện được lưu trong thư mục dự án chính của tôi. Bây giờ tôi nhận được phản hồi trong AJAX. Vì vậy, bây giờ làm thế nào tôi nên xử lý các phản ứng trong chức năng thành công, gửi trở lại từ sever và mở một tập tin PDF.cách mở tệp PDF trong khi trả lại tệp theo yêu cầu thành công AJAX
Cảm ơn.
jQuery
$(function() {
$("#report_submit").click(function(){
$.ajax({
type : "POST",
url: "/reports/",
data : { 'start_date' : $("#startDate").val() , 'end_date' : $("#endDate").val() },
success : function(result){
},
error : function(result){
}
});
});
});
xem mã Django
def generate_report(request):
ctx = {}
if request.is_ajax():
if request.POST.has_key('start_date'):
start_date = datetime.strptime(request.POST[ 'start_date'] , '%m/%d/%Y')
end_date = datetime.strptime(request.POST[ 'end_date'] , '%m/%d/%Y')
......
# PDF GENERATED in MAIN PROJECT DIRECTORY
with open(os.path.join(os.path.dirname(__file__),'../../../../gui','Report.pdf')) as pdf:
response = HttpResponse(pdf.read(), content_type='application/pdf')
response['Content-Disposition'] = 'inline;filename=Report.pdf'
return response # so, now when I send a response back, how should I process it in AJAX success function?
pdf.closed
return render(request, 'generate_report/reports.html', ctx)
Để tôi cho nó một shot. – PythonEnthusiast
bạn không cần phải tải xuống tệp. Chỉ cần chuyển hướng trình duyệt đến nó. Hãy nhớ rằng, bây giờ bạn đã tạo tệp, nó nằm đâu đó trên hệ thống tệp của bạn và có thể được truy xuất qua URL. Chỉ cần chuyển URL trở lại trong phản hồi và sử dụng JS để chuyển hướng tới nó. Thậm chí bạn có thể đặt cookie để hạn chế quyền truy cập vào nó. – cstrutton
Tôi có nên thêm mã ở trên '$ .fileDownload' dưới chức năng thành công của AJAX không ?? – PythonEnthusiast