2016-07-04 5 views
0

Ich habe einen einfachen Web-API-Controller, den ich durch die URL navigieren kann und es wird die .csv-Datei herunterladen. Jetzt versuche ich etwas jQuery zu schreiben, wo man, wenn man auf den Button klickt, es herunterladen wird, mir aber etwas fehlt.Web-API-Controller lädt csv, funktioniert aber nicht mit jQuery

public HttpStatusCode Get(string id) 
{ 
    var reportString = AskWebBusiness.Reports.GenerationQuestionReport(id); 
    var response = HttpContext.Current.Response; 
    response.ContentType = "text/csv"; 
    response.AppendHeader("Content-Disposition", "attachment;filename=" + "Questions Report.csv"); 
    response.Write(reportString); 
    return HttpStatusCode.OK; 
} 

Dieser Code funktioniert definitiv und ich kann auf die URL gehen, um den Download zu starten.

$('.js-btn-download-content').click(function (event) { 
     var currentLanguage = getCulture(); 
     var url = baseUrl + 'report/get/' + currentLanguage; 
     event.preventDefault(); 
     $('.loadingContent-download').fadeIn(200); 
     $.ajax({ 
      headers: { 
       Accept : "text/csv; charset=utf-8", 
       "Content-Type": "text/csv; charset=utf-8" 
      }, 
      url: url, 
      dataType: "text/csv", 
      success: function (data) { 
       $('.loadingContent-download').fadeOut(200); 
       // Not sure about code below 
       //var xmlDoc = $.parseXML(data); 
       //var $xml = $(xmlDoc); 
       //var $title = $xml.find("200"); 
       //if ($title) { 
        //$('.contentDownloaded-download p').html('Content donwloaded!'); 
        //$('.contentDownloaded-download').show(); 
       //} else { 
        //$('.contentDownloaded-download p').html('Download failed! Please try again.'); 
        //$('.contentDownloaded-download').show(); 
       // 
      } 
     }); 
     $('.js-btn-confirm').click(function() { 
      $('.contentDownloaded-download').fadeOut(200); 
     }); 
    }); 

Wie Sie sehen können, hier einige javaScript, die ich habe in der App wieder ein OK zu handhaben ist. Der Browser lädt die Datei jedoch nicht, wenn dieses Skript ausgelöst wird. Irgendwelche Ideen?

Antwort

0

Geben Sie in Ihrer Get (string id) -Methode die HttpResponseMessage und nicht nur den HttpStatusCode zurück. Außerdem stellt die ASP.net-Web-API den Status von HttpContext.Current.Response (ohne einen Assistentencode) nicht sicher. Sie können etwas tun, ändern Sie die Signatur in Get (HttpRequestMessage Anfrage, String-ID) und dann aufrufen request.CreateResponse (statusCode, Daten).

Verwandte Themen