Je suis un peu coincé avec la situation suivante:Jquery appel Ajax avec django
J'utilise un appel ajax soumettre un formulaire, j'utiliser les valeurs de formulaire pour faire une « requête » dans django. Lorsque cela s'est produit et j'ai obtenu le bon jeu de requête, il me délivre une réponse HttP sous la forme d'un CSV. J'ai mis en place les en-têtes et toutes les choses nécessaires pour obtenir la fenêtre 'enregistrer le fichier sous' ... malheureusement, cela n'arrive pas parce que l'appel ajax place la réponse dans un div.
Voici le code:
if (vsc=='True'){
ajax_loader();
// add pdf, csv $.ajax (todo)
$.ajax({
type: "POST",
url: "./test",
dataType: 'text',
success: test,
data: {host: ho, log: lo, severity: se, datetimestart: dts, datetimeend: dte, enabled: ena, csv: vsc, pdf: fdp}
});
donc dans cette fonction ajax un appel la ./test url. À l'intérieur de cette URL, je fais un filtrage d'objet et je fais un objet de réponse http et le renvoie. En cas de succès, je voudrais arriver à "enregistrer le fichier sous", mais en ce moment je n'ai aucune idée de la façon de le faire. J'ai réussi à montrer la réponse dans un div sur ma page html ./test mais le 'save file as' n'apparaît jamais.
Mon vue django:
def export_csv(request,queryset)
# do some filtering on queryset and create a csv
response = HttpResponse(''.join(csv_export), mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=customreportexport.csv'
return response
Ceci est mon avis, tout devrait être normal, je pense qu'il est vraiment appel ajax ... sur le « succès » que je dois faire quelque chose il popups comme « sauver fichier comme ', seulement je ne sais pas comment. J'ai déjà essayé un iframe aussi mais que je dois donner la 'source' comme url et ce n'est pas possible car l'appel ajax fait le post des paramètres etc ... aucune aide sur ceci? Auparavant, je savais qu'il y avait quelque chose dans une langue appelée « IsUpload = true », dommage que ce n'est pas jquery ajax ....
l'espoir d'entendre de vous les gars
semble que vous n'acceptez pas un conseil! – jAndy
qui conseille? – Thomas
Il signifie que vous avez posé 6 questions sur ce site et que vous n'avez pas accepté les réponses fournies. La mécanique et la courtoisie implicite sur le site est que vous devriez accepter la meilleure réponse correcte à vos questions, s'il y en a qui peuvent être considérées comme correctes. – Greg