Anlage mit $ .ajax Aufruf zurückgeben

8

Ich habe einen iframe auf meiner Seite, und innerhalb dieses iframe führe ich Code aus:

%Vor%

Antwort ist gut, aber ich bekomme nicht "SAVE ATTACHMENT" -Dialog, nichts passiert ... Um die Dinge klar zu machen, sind Kopfzeilen in Ordnung (Inhaltsdisposition, MIME-Typ usw.), als wenn ich diesen Export mit ausführen würde einfache Form Einreichung funktioniert. Es scheint, dass es etwas mit Ajax-Aufruf zu tun hat. Wird es irgendwie funktionieren?

Danke

    
dragonfly 29.12.2010, 09:00
quelle

2 Antworten

8

Wenn Sie AJAX verwenden, wird das Dialogfeld "Speichern unter" nicht angezeigt. Wenn Sie diesen Dialog erhalten möchten, geben Sie einfach einen normalen Link zur Download-Datei an:

%Vor%

oder wenn Sie eine POST-Anfrage benötigen:

%Vor%

Wenn Sie AJAX verwenden, um eine Datei herunterzuladen, wird der Inhalt dieser Datei beim erfolgreichen Rückruf abgerufen, aber Sie können nicht viel damit machen: Sie können ihn nicht auf dem Client-Computer speichern, und Sie können das Dialogfeld Speichern unter nicht aufrufen.

    
Darin Dimitrov 29.12.2010, 09:02
quelle
9

Um Darins Antwort zu erweitern, hier ist, wie ich es gemacht habe:

Ich habe ein verstecktes Formular mit einem versteckten Eingabeelement, das verwendet werden kann, um die Werte dynamisch zu halten, die ich konvertieren / exportieren möchte:

%Vor%

Dann habe ich diesen jQuery-Code, um die Elemente dynamisch mit den post-Parametern zu füllen und dann das Formular zu senden.

%Vor%

Und weil die zurückgegebene Antwort (aus dem api-Aufruf) einen Content Disposition-Header gesetzt hat, wird diese Formular-Submit-Aktion den Benutzer nicht von der aktuellen Seite wegsteuern (sondern nur den Anhang zurückgeben) wie ein normales Formular-Submit und somit immer noch hält die Illusion eines typischen Ajax unterwerfen: -)

    
nemesisfixx 14.11.2012 10:40
quelle

Tags und Links