文件我有這樣的事情在我看來:C#MVC返回JSON或AJAX調用
var url = '@Url.Action("DownloadZip", "Program")' + '?programNums=' + selectedRow;
$.ajax({
url: url,
dataType: 'json',
async: false,
success: function (data) {
if (data != "Successful") {
alert(data);
}
}
});
控制器可以返回一個文件或者如果有錯誤可以返回一個JSON的結果。 一直無法讓他們一起工作。
這裏是什麼樣子:
public ActionResult DownloadZip(string programNums)
{
if(string.IsNullOrEmpty(programNums))
{
return Json("Error, blank info sent.", JsonRequestBehavior.AllowGet);
}
var memoryStream = new MemoryStream();
using (var zip = new ZipFile())
{
zip.AddFile("C:\\sitemap.txt");
zip.Save(memoryStream);
}
memoryStream.Seek(0, 0);
return File(memoryStream, "application/octet-stream", "archive.zip");
}
我所看到的是,Ajax調用需要一個JSON值回。因爲在我的情況下,它返回一個文件,它不能工作。無論如何要處理我在做什麼,以便它可以從ajax調用中返回JSON或文件。
在AJAX調用它被指定,其需要'json'作爲返回的類型。這與發送文件時返回的「application/octet-stream」不同。嘗試從ajax調用中刪除行'dataType:'json''? –
謝謝謝恩 - 刪除dataType:json但沒有奏效。它返回了文件,但沒有可讀的格式。儘管關閉。 –
我讀過AJAX不是下載文件的好方法。這裏是一個類似的問題[鏈接](http://stackoverflow.com/questions/7578124/jquery-ajax-call-for-pdf-file-download) –