2016-07-26 2 views
0

のAjaxのコールにxlsファイルをダウンロードできませんブラウザに来るが、それは表示され、ブラウザにダイアログボックス「名前を付けて保存」しませんでした私はAjax呼び出し上のサーバで生成された.XLSファイルをダウンロードにしたいは私がUIをロックしたい生成するが、Ajax呼び出しファイルにデータに対し をダウンロード取得されていない私は、サーバーで、時間の.XLSによって生成された.xlsファイルをダウンロードしたいのjQuery

1)

私の問題文があり、 Jquery。

2).xlsファイルが生成されるまでに、私はUIをロックしたいと思います。

jQueryのAjaxの機能、.ajaxformファイルをダウンロードするためにを働いていません。

attr()機能はファイルを正常にダウンロードしますが、ファイルダウンロードの完了を通知する機能はありませんでした。

注:1)ブラウザから「保存」オプションを有効にしてください。

2) .Xls file is getting generated from server side successfully 

AJAXを経由して行う可能な任意の代替オプション

答えて

0

はそれはそれは不可能である場合はお知らせください。成功のコールバックのようなことをすることができます。

window.location="download.xls/or/what/ever/?para1=value1...." 

サーバー上に適切なダウンロードヘッダーを設定します。

0

残念ながら、)我々はAJAX要求

からファイルをダウンロードすることはできませんが、あなたは私はあなたが(ダウンロードステータスを追跡維持したいと思います

$("#id_of_form input[type='submit']").click(function(e){ 

// your code for lock screen here 

return true; 
}); 
0

ベロコードでロック画面を行うことができ、Uは簡単にできますダウンロードが完了するまであなたのUIをロックする、残念ながらajaxコールを使用してダウンロードファイルを有効にする方法は2通りありますが、いくつかのhtml要素を追加すると、jquery-ajax自体でダウンロードを有効にできます。 jqueryがダウンロードを終了するまであなたのUIをロックしてください。

方法1

  1. その名を送信AJAXで、応答でこのメソッドを呼び出し

  2. 任意の一時ロケーションにXL(ファイル)を生成し、そのファイルを保存するの背後にあるコードを使用しますあなたが保存したファイル

  3. <a>タグをjqueryに作成し、clickイベントを有効にしてファイルをダウンロードします。

  4. ダウンロードを終えた後のuはあなたのUI

    $.ajax({ 
    type: "POST", 
    url: AQ.AMT.Url + "/Home/StoreImage", 
    //async: false, 
    data: JSON.stringify({ request: request }), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (Data) { 
    
        var _tempPPT = AQ.AMT.Url + "/Download/Temp/" + Data.Result + ".pptx"; 
        // Trick for making downloadable link 
        a = document.createElement('a'); 
        a.href = _tempPPT;// window.URL.createObjectURL(xhttp.response); 
        a.id = "idanchrPPT"; 
        // Give filename you wish to download 
        var today = new Date(); 
        var dd = today.getDate(); 
        var mm = today.getMonth() + 1; //January is 0! 
        var yyyy = today.getFullYear(); 
        if (dd < 10) { 
         dd = '0' + dd 
        } 
        if (mm < 10) { 
         mm = '0' + mm 
        } 
        today = dd + '/' + mm + '/' + yyyy; 
        if (flipName == "") 
         a.download = "" + name + "-" + today + ".pptx"; 
        else 
        a.download = "" + name + "-" + flipName + "-" + today + ".pptx"; 
        a.style.display = 'none'; 
        document.body.appendChild(a); 
        a.click(); 
        $("#idanchrPPT").remove(); 
    
    
        //deleting the file 
        var deleteFiles = {}; 
        deleteFiles.FilePath = Data.Result; 
        setTimeout(function() { 
         $.ajax({ 
          type: "Post", 
          data: JSON.stringify({ deleteFiles: deleteFiles }), 
          url: AQ.AMT.Url + "/Home/DeleteExportedPPt", 
          async: true, 
          contentType: "application/json; charset=utf-8", 
          dataType: "json", 
          success: function (result) { 
          }, 
          error: function (result) { 
          } 
         }); 
        }, 1000); 
        }, 
        error: function (e) { 
        } 
    }); 
    

方法2

使用XMLHttpRequestの代わりにjQueryの$アヤックスのロックを解除することができます

xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    var a; 
    if (xhttp.readyState === 4 && xhttp.status === 200) { 

     var _tempPPT = AQ.AMT.Url + "/Download/Template/ExportPPtTrend1.pptx"; 

     // Trick for making downloadable link 
     a = document.createElement('a'); 
     a.href = _tempPPT;// window.URL.createObjectURL(xhttp.response); 
     a.id = "idanchrPPT"; 
     var k = xhttp.responseText; 
     // Give filename you wish to download 
     a.download = "test-file.pptx"; 
     a.style.display = 'none'; 
     document.body.appendChild(a); 

     a.click(); 
     $("#idanchrPPT").remove(); 

     //alert("ok"); 
     $('.divLoader,.divBackgroundCo').hide(); 
    } 
}; 
// Post data to URL which handles post request 
xhttp.open("POST", urlToHandler); 
//Send the proper header information along with the request 
xhttp.responseType = 'text'; 
//xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 


xhttp.send(); 
関連する問題