没有执行ajax

时间:2016-10-21 15:07:44

标签: ajax asp.net-mvc

我有这段代码。我在哪里使用此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>

我有点卡住,因为完成的方法永远不会被执行。我不知道为什么。

这些是我回复的标题回复。 Header responses

一切看起来都不错,控制台没有错误。

2 个答案:

答案 0 :(得分:1)

通常我会将$ .ajax与这些函数一起使用:

  1. success =请求成功时要调用的函数
  2. error =请求失败时要调用的函数
  3. complete =请求完成时要调用的函数(执行成功和错误回调之后)。我也用它来阻止加载栏。
  4. beforeSend =预请求回调函数。甚至用来开始加载吧。
  5. 所以我建议你使用它:

    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")"
        });
});