Ottengo 2 date, data di inizio e di fine, tramite AJAX. Elaboro i dati in bianco e nero di quei 2 giorni, generi un rapporto e restituisco una risposta a Http. Il report PDF è ora salvato nella mia directory principale del progetto. Ora ricevo una risposta in AJAX. Quindi, ora come devo elaborare la risposta nella funzione di successo, inviata di nuovo dal sever e aprire un file PDF.come aprire un file PDF mentre si restituisce il file in AJAX richiesta risposta positiva
Grazie.
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){
}
});
});
});
Django codice della vista
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)
Faccio è un colpo. – PythonEnthusiast
non dovrebbe essere necessario scaricare il file. Basta reindirizzare il browser ad esso. Ricorda, ora che hai generato il file, è da qualche parte nel tuo file system e può essere recuperato tramite URL. Basta passare l'URL nella risposta e utilizzare JS per reindirizzare ad esso. Puoi persino, impostare un cookie per limitare l'accesso ad esso. – cstrutton
Dovrei aggiungere il tuo codice sopra '$ .fileDownload' in funzione di successo dell'AJAX ?? – PythonEnthusiast