Download per AJAX & Content Type 'application/force-download'

@Cromon ::

Hey, sieht gut aus. Im Chrome und Feuerfüxle läufts...
Wie lös ich das im IE? Weil der meggert wie Du sagst:
SCRIPT575: Der Vorgang konnte aufgrund des folgenden Fehlers nicht fortgesetzt werden: c00c023f.
 
Auch wenn es häßlich wird, könntest Du beim IE das ganze als verstecktes IFrame einbinden und den entsprechenden Header senden, der den IE dazu auffordert, die Datei herunterzuladen. Ob das besser geht oder ob das überhaupt geht, weiß ich leider nicht.

PS: In welchem Browser hast Du denn mein Skript getestet, dass Dir der Fehler angezeigt wurde? Letztendlich weiß ich, an welcher Stelle der Fehler auftritt und warum, aber ich kann mir nicht erklären, warum der entsprechende Browser das so handhabt, denn letztendlich müsste die Eigenschaft .responseText an der Stelle einfach undefiniert sein, aber eben nicht inaccessible.
 
Zuletzt bearbeitet:
@einfach nur crack :: FireFox und Chrome...
Langsam treibt's mich in den Wahnsinn... lol
Die No-jQuery Lösung vom Cromon rockt am Meisten.
Nur dumm das es beim IE nicht mitspielt. Da iFrame Option doof. Denn es werden auch Dateien geladen die man nicht in einem Frame darstellen kann (ZIP, RAR; 7ZIP, DOCX, XLSX ....) Glaube nicht das IE so was darstellen kann. lol
 
IE entscheided am Header ob eine Datei als Download behandelt wird. Das heisst du kannst nur Serverseitig dafür sorgen, dass es auch im IE klappt.
Was passiert denn jetzt wenn du den Link im IE anklickst?
 
@jeipack ::

moin, .. der IE sagt dann:
SCRIPT575: Der Vorgang konnte aufgrund des folgenden Fehlers nicht fortgesetzt werden: c00c023f.
Wie macht denn der IE das mit den Downloads? Oder besser gefragt war wäre der gescheiteste weg?
Opera / Safari können das übrigens auch nicht leiden. Die machen rein gaaaar nix
Wie debugged man in Opera oder Safari?
Und vor allem wie biete ich die Datei trotzdem zum Donwload an?

LG NetBu||
 
http://jsfiddle.net/4wj9L0qs/2/

So klappts im IE:
Javascript:
var blob = new Blob([requestObject.response], { type: 'application/pdf' });
                       window.navigator.msSaveBlob(blob, 'test.pdf');
                        alert('File save request made using msSaveBlob() - note the single "Save" button below.');
hab ich von: http://msdn.microsoft.com/en-us/library/ie/hh779016(v=vs.85).aspx
alert ist notwendig, ansonsten wird das File nicht als download angeboten.

Nun kannst du auf window.navigator.msSaveBlob abfragen und danach die eine oder eben diese Variante ausführen.
 
@jeipack ::

Moin,

ich fange an JavaScript zu hassen.
Hab nun den Code von Dir isoliert in ein HTML File geschrieben.

Fazit:
Chrome mag damit arbeiten, findet aber :
Javascript:
Uncaught TypeError: undefined is not a function
var blob = new Blob([requestObject.response], { type: 'application/pdf' });
window.navigator.msSaveBlob(blob, 'test.pdf');
alert('File save request made using msSaveBlob() - note the single "Save" button below.');

maxton macht mir nun ein Downloadfenster auf

Internet-Explorer ist der Meinung:
Javascript:
SCRIPT5007: Für die Eigenschaft "type" kann kein Wert abgerufen werden: Das Objekt ist Null oder undefiniert
if( requestObject.response.type!= "" ){ ....

Opera & Safari machen offensichtlich gar nichts.. Oder zumindest habe ich nicht herausgefunden wie man hier die Console anschaut in der die Ausgaben kommen.

Warum einigen die sich nicht mal auf einen Standard der für alle Browser gilt? Boah, bin ich froh das die keine Autos bauen, sonst müsste ich 135 Führerscheine machen um jedes Auto fahren zu dürfen. lol

Wie baut man eine gescheite Weiche? Chrome kann mit dem Blob nix anfangen, IE kennt keinen FileReader(). Also nehme ich an ich müsste so was machen if(chrome){}else if(firefox){} elseif(maxton) .... ?
 
Hallo NetBull

Chrome kann mit Blob arbeiten, Chrome kennt aber logischerweise msSaveBlob als Funktion nicht, ms ist das Präfix für Erweiterungen im Internetexplorer. Der Internetexplorer kennt den FileReader durchaus, aber Microsoft scheint es als nicht nötig zu erachten das dowload-Attribut für Links zu implementieren, stattdessen nehmen sie lieber irgendwelche merkwürdigen Workarounds.

Viele Grüsse
Cromon
 
Wie fängt man das denn ab? Bzw. was ist eine sinnvolle IF / ELSE Konstruktion. Ein if(FileReader !=undefined) hat nicht geholfen.. Würde gerne die Browser abfangen und jedem sein eigenes Script ausführen lassen. Wie fängt man die Browser am besten ab?
 
Du hast gerade die erste und wichtigste Lektion bei JavaScript gelernt: jeder Browserentwickler glaubt, dass sein Weg der einzig richtige ist. Aber es war früher noch viel, viel schlimmer. Seit HTML5 gibt es einen einheitlichen Standard, nur ist dieser teilweise noch nicht im Endstadium, weshalb erst einmal noch alle Browser ihren eigenen, wenn auch meistens (abgesehen von Microsoft) gleichen, Weg gehen. Außerdem sind die Implementationfortschritte auch unterschiedlich. Aber das wird langsam.
Martin Luther King hat gesagt.:
I have a dream that one day I will write code for a browser and it works in every one the same way.
 
Zurück