【问题标题】:Getting a downloadable file with an ajax request使用 ajax 请求获取可下载文件
【发布时间】:2013-08-05 16:07:02
【问题描述】:

编辑:不知道为什么这被标记为重复,因为原件甚至没有真正的答案,除了“使用这个第三方工具来添加你可能不想要或不需要的额外界面内容”。我使用 ajax 的原因是因为我需要发送一个 id 数组,但我不知道除了使用 ajax 之外怎么做。我知道我需要做什么,所以我真的不需要这篇文章的任何帮助,但这绝对不是重复的问题,即使是重复的问题,也没有真正的原始答案。

我一直在尝试获取一个链接,该链接将下载由我的导出脚本生成的文件。但是,我无法获取返回的文件。这是我一直在用的JS函数……

function sendSelected(path) {
    var ids;
    ids = jQuery("#grid").jqGrid('getGridParam', 'selarrrow');
    if (ids.length > 0) {
        alert("");
        $.ajax({
            url: path,
            data: { ids: ids },
            type: "POST",
            traditional: true,
        });
    } else {
        alert("You have not selected any rows.");
        return false;
    }
}

然后是 HTML 部分...

<input type="submit" name="command" value="Export" />
<script type="text/javascript">
    jQuery("#export").click(function () { sendSelected("/Forms/Export"); });
</script>

这一切都很好,除了我的导出器以document.Save(response, "file.pdf"); 结尾并且页面没有得到这个。如果我将其更改为 document.Save(response, @"C:\some\location\to\save\at.pdf"); 文件会在那里创建,所以我知道创建文件不是问题。另外,如果我只是创建一个指向 /Forms/Export 的标准表单,然后手动输入 id,我可以很好地下载文件,但这不适用于我的实现。

【问题讨论】:

    标签: c# javascript jquery ajax


    【解决方案1】:

    $.ajax 不起作用,我最近尝试了类似的方法,但最终得到了不同的解决方案。只需有一个带有隐藏输入的表单,然后在您的 sendSelected 中设置字段和操作,然后提交表单。

        $("#hiddenField").val(data);
        $("#yourForm").attr("action", path)
        $("#yourForm").submit();
    

    【讨论】:

      猜你喜欢
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多