javascript - 通过 AJAX 调用控制器时返回文件不起作用
问题描述
我正在尝试通过ajax
using下载图像<a>
。这是我的代码来填充我的DataTable
.
$.ajax({
url: "/Capability/GetAllTrainingLog",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#tblTrainingLog").dataTable({
data: data,
columns: [
{'data' : 'TrainingTitle'},
{'data' : 'TrainingURL'},
{"data": null, render: function (data, type, row) {
//data.attachment returns a file path e.g C:\Project\App_Data\image.jpg
return '<a onclick="fncDownloadImage(\''+ data.Attachment.replace(/\\/g,"\\\\") +'\')" >Download</a>'
}}
}
]
});
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("A problem has been encountered. Please contact the web administrator.");
}
})
这是该fncDownloadImage
函数的代码:
function fncDownloadImage(fileName)
{
var download = {'filePath' : fileName}
$.ajax({
type: "POST",
url: '/Capability/Download',
data: JSON.stringify(download),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (response) {
alert('Success');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
/Capability/Download
以及控制器的代码:
[HttpPost]
public FileResult Download(TrainingModel pass)
{
byte[] fileBytes = System.IO.File.ReadAllBytes(pass.filePath);
string fileName = Path.GetFileName(pass.filePath);
return File(pass.filePath, System.Net.Mime.MediaTypeNames.Application.Octet, Path.GetFileName(pass.filePath));
}
当我执行控制器时fncDownloadImage
,控制器不会返回错误,但fncDownloadImage
函数会返回错误:SyntaxError: Unexpected token in JSON at position 0
.
我的代码有什么问题?
解决方案
推荐阅读
- node.js - (节点:11168)UnhandledPromiseRejectionWarning:ValidationError:列表验证失败
- python - Python - SimpleGui - Listbox - 搜索后我失去了亮点
- java - 按钮使用来自主题而不是来自可绘制对象的颜色
- flutter - 如何使容器扩展以适应 SingleChildScrollView 颤动中的文本
- python - 我正在尝试使用 imagezmq 和 opencv 制作视频聊天应用程序
- c - 将一个字节添加到 uint32 的第一个字节
- shareandcharge - npm install 后,ocn-tools 无法编译
- ios - 如何让 AnchorEntity.position 与触摸事件对齐
- javascript - MUI 自动完成功能不适用于 react-hook-form
- linux - 有效地将块插入文件中间