2016-10-21 7 views
0

Imはこのコードを持っています。私がこのアクションを使用して、トリガーにエクセルファイルをダウンロードするエクスポートを取得する場所。ブラウザにリンクと引数を入力すると完全に動作し、ファイルがダウンロードされます。done not executed ajax

しかし、これをajaxifiedコンテキストから呼び出すと、これはすべてが間違っています。

<script type="text/javascript"> 
    function exportPerson(e) { 
    e.preventDefault(); 
    var dataItem = this.dataItem($(e.currentTarget).closest("tr")); 
    var action = '@Url.Action("ExportContactAlarmList", "Contact")'; 
    $.ajax({ 
     url: action + '/' + dataItem.Id, 
     type: "POST", 
     done: function(response) { 
      var dataURI = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + 
       kendo.util.encodeBase64(response); 
      kendo.saveAs({ 
       dataURI: dataURI, 
       fileName: "PersonExport.xlsx", 
       proxyURL: "@Url.Action("Save", "Home")" 
      }); 
     } 
    }); 
} 
</script> 

完了したメソッドが決して実行されないため、私は固執しています。そして私は理由を知らない。

これは私が戻ってくるヘッダーからの私の回答です。 Header responses

コンソールには何も表示されず、エラーもありません。

+0

あなたは成功と対戦を試しましたか? –

+0

'done'は利用可能な' jQuery.ajax() '設定プロパティではありません。ドキュメントを読む:http://api.jquery.com/jQuery.ajax/ –

答えて

1

を試してみてください。

  1. 成功は、要求が
  2. を成功した場合に呼び出される関数を=
  3. error =要求が失敗した場合に呼び出される関数
  4. 完了=リクエストが終了したとき(成功とエラーのコールバックが実行された後)に呼び出される関数。私はローディングバーを止めるのにも使用します。
  5. beforeSend =事前リクエストコールバック関数。ロードバーの起動にも使用されます。

だから私はあなたがこれを使用することをお勧め:

success: function(response) {... 

REF:http://api.jquery.com/jquery.ajax/

私はわからないが、XMLHttpRequestのを使用してファイルをダウンロードするには、いくつかの制限があります。おそらくあなたが前にヘッダを定義していれば... $ .ajaxとdataTypeの設定を受け入れる参照。

幸運を祈る!

+0

完全な関数が私を始めましたが、ダウンロード関数が呼び出されましたが、バイナリデータを囲んでいません。受け入れの設定を確認する必要があるとします。 – WagoL

+0

私はそれを解決しました。この[記事](http://stackoverflow.com/questions/16670209/download-excel-file-via-ajax-mvc)を使用してください。助けてくれてありがとう。 – WagoL

0

通常、私は、これらの機能を持つ$アヤックスを使用して、この

$.ajax({ 
     url: action + '/' + dataItem.Id, 
     type: "POST", 
     success: function(response) { 
      var dataURI = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + 
       kendo.util.encodeBase64(response); 
      kendo.saveAs({ 
       dataURI: dataURI, 
       fileName: "PersonExport.xlsx", 
       proxyURL: "@Url.Action("Save", "Home")" 
      }); 
     } 
    }); 

または

$.ajax({ 
     url: action + '/' + dataItem.Id, 
     type: "POST"  
}).done(function(response) { 
     var dataURI = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + 
     kendo.util.encodeBase64(response); 
     kendo.saveAs({ 
       dataURI: dataURI, 
       fileName: "PersonExport.xlsx", 
       proxyURL: "@Url.Action("Save", "Home")" 
     }); 
});