IE download-Datei

Verwenden Sie die folgenden Zeilen von code, den ich in der Lage bin, eine Datei herunterzuladen, die in der Antwort von einem Ajax-Aufruf in Firefox, Chrome, Opera. Jedoch im IE das href Attribut download wird nicht unterstützt. Daher die unten funktioniert nicht im IE.

HTML:

 <div class="fRight" style="margin-left:5px; margin-rigth:5px" >
    <input type="button" value="Request File"  id = "chReqFileBtn"  onclick = "handleClick"/>
    <a href="#" id="challengeReqFileAnchor" style="visibility: hidden"></a>
 </div>

JavaScript:

function handleClick()
{
    var code = $('#code').val();
    var quantity = $('#quantity').val();

    var req = $.ajax(
    {
        'type': 'POST',
        'url' : $apiBasePath+'config/challenge-file',
         contentType : 'application/json',
        'data': JSON.stringify({'code':code, 'quantity':quantity}),
        'success':function(response, status, xhr)
        {
            var code = xhr.getResponseHeader('Operation-Code');

            var anch = $('#challengeReqFileAnchor');
            anch.attr(
            {
                "download" : 'request.bin',
                "href" : "data:text/plain," + response       
            });
            anch.get(0).click();
        },
        'error': function(request,status,errorThrown) 
        {
           ......
        }
    });
    $pendingReqs.push(req);  
}

Welche Möglichkeiten hätte ich, um zu erreichen das gleiche Verhalten im IE als auch?

  • Warum lassen Sie nicht die server umgehen? Was ist der Zweck der ajax-call?
  • Manchmal kann ein niedrigerer-tech-Ansatz ist besser - weil es nicht nur den IE, wird Probleme haben! Betrachten Sie das speichern der AJAX-Ergebnis auf dem server (oder einfach machen es zu einem normalen HTTP-request an Erster Stelle) und der server die entsprechenden content-disposition Header.
  • Aber wenn Sie unbedingt wollen, dass diese im browser an: github.com/ChenWenBrian/FileSaver.js#examples
  • Auf der server-Seite habe ich den spezifischen Header zu erzwingen, donwload ,da dieser aber ajax hat es keine Wirkung.Ich Tue es in ajax da muss ich auch zum ausführen von zusätzlichem code in der Antwort .
  • mein downloader script funktioniert in IE10+: danml.com/js/download.js es verwendet msSaveBlob für IE10 compat...
  • warum gehst du nicht erstellen Sie so etwas wie meine fiddle: jsfiddle.net/GuyT/r8oknrko/1

InformationsquelleAutor steve | 2014-08-04
Schreibe einen Kommentar