我有这段代码。我在哪里使用此Action来获取下载excel文件的导出。当我在浏览器中输入链接和参数时,该文件会被下载。
但是我想从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>
我有点卡住,因为完成的方法永远不会被执行。我不知道为什么。
一切看起来都不错,控制台没有错误。
答案 0 :(得分:1)
通常我会将$ .ajax与这些函数一起使用:
所以我建议你使用它:
success: function(response) {...
参考:http://api.jquery.com/jquery.ajax/
我不确定,但使用XMLHttpRequest下载文件有一些限制。也许如果您之前定义标题...请参阅接受设置形式$ .ajax和dataType。
祝你好运!答案 1 :(得分: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")"
});
});