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

@NetBull
Den IE solltest du anhand von if((typeof window.navigator.msSaveBlob) !== "function") erkennen können. Andernfalls einfach die Link-Variante verwenden.
 
OK, das Problem ist schon weiter oben.

Javascript:
console.log("type   --> " + requestObject.responseType);
console.log("state  --> " + requestObject.readyState);
console.log("status --> " + requestObject.status);

Diese drei Zeilen sind erst mal im Einsatz um Entscheidungen zu treffen ob überhaupt was brauchbares vom Server kam.

Code:
CHROME: kommt damit klar und alle drei Ausgaben werde in der Konsole gezeigt!
Code:
FIREFOX: kommt auch damit klar und alle drei Ausgaben werde in der Konsole gezeigt!
Code:
MAXTON: kommt auch damit klar und alle drei Ausgaben werde in der Konsole gezeigt!

Code:
IEXPLORER: hat einen Fehler zu melden, läuft aber weiter:
SCRIPT575: Der Vorgang konnte aufgrund des folgenden Fehlers nicht fortgesetzt werden: c00c023f.
Angeblich ist das ein Problem: console.log("status --> " + requestObject.status);
test.html, Zeile 21 Zeichen 6
Was ist bitte schön Zeichen 6? Wenn ich durchzähle, dann wäre es das 'e' in Console

Code:
SAFARI: Keine Ahnung, finde die Konsole nicht um die Ausgaben zu sehen.
Code:
OPERA: Keine Ahnung, finde die Konsole nicht um die Ausgaben zu sehen.

Frage 1: Wie komm ich bei Opera und Safari in die Konsole rein?
Frage 2: Hab ich noch wichtige Browser vergessen?

LG NetBu||

Hier noch mal das komplette Beispiel....
Code:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">

function loadDocument(element){
    console.log("Initiate document download request");
    var requestObject = getRequestObject();
   
    requestObject.open('GET', '/file-stream/response.php', true);
    requestObject.responseType = 'blob';
   
    requestObject.onreadystatechange = function() {        
       
        console.log("type   --> " + requestObject.responseType);
        console.log("state  --> " + requestObject.readyState);
        console.log("status --> " + requestObject.status);
        if(requestObject.readyState == 4 && requestObject.status == 200) {
            console.log("ready state und status sind OK");
            // hier steigt 
        }        
    };
    requestObject.send();
 }

function getRequestObject(){
 var returnObject;
 if (window.XMLHttpRequest)
 {
     // code for IE7+, Firefox, Chrome, Opera, Safari
     console.log("initiate XMLHttpRequest");
     returnObject=new XMLHttpRequest();
 }
 else
 {
     // code for IE6, IE5
     console.log("initiate Microsoft.XMLHTTP request");
     returnObject=new ActiveXObject("Microsoft.XMLHTTP");    
 }
 return returnObject;
}

loadDocument("a")

</script>

</head>
<body>

</body>
</html>
 
Unter Mac findet man beim Safari in den Einstellungen unter dem Punkt "Erweitert" das Feld "Entwicklermenü anzeigen". Wenn Du das aktivierst, dann wird Dir das Entwicklermenü angezeigt, in dem Du auch die Fehlerkonsole findest.
 
@einfach nur crack :: cool. Safari hat eine Console. Weis nur nicht warum man die verstecken muss.
Und Safari kann auch mit folgendem Code nix anfangen
console.log("type --> " + requestObject.responseType);
ergibt: type -->
Also noch nicht mal undefined.
Gibt es irgendwo eine Liste welche Konstrukte für welchen Browser funktionieren? Weil den Type wirds wohl brauchen um den Download zu initiieren? Oder?
 
Die Krise kriech...

Hi All,...

also irgendwie komm ich kein Bisschen weiter.
Bis zur Auswertung des Response geht alles. Aber......

Code:
Code:
function loadDocumentFromResponse(requestObject, filename){
            console.log('Response from Server gets analyzed...');                       
            if( typeof URL === "function" ){               
                // das geht mit Chrome und da gibt es auch einen Download
                // Firefox kennt URL, erzeugt aber keinen Download ...???
                console.log('Will use the URL function to revoke an object url');
                var url = URL.createObjectURL(requestObject.response);
                var a = document.createElement('a');
                a.setAttribute('href', url);
                a.setAttribute('download', filename);
                a.click();
                URL.revokeObjectURL(url);
                // chrome macht es hier richtig und es gibt einen gültigen Download
                // firefox macht NICHTS!
            }else{
                // IE, Maxton, Safari and Opera werfen eine Exception, aber wie geht es dann hier weiter?
                console.log('Function URL ist unbekannt');
            }
        }

im IF Zweig macht Chrome es hervorragend, FireFox nicht und es meckert nicht mal. Irgendeine Idee?
Um die anderen kümmer ich mich danach. Gehe die Möglichkeiten nun einzeln durch,....

LG NetBu||
 
Zurück