【问题标题】:open save as dialog from the javascript从 javascript 打开另存为对话框
【发布时间】:2013-05-27 09:54:51
【问题描述】:

我需要实现以下场景:我有一个 html 页面,其中是一个按钮和一些文本框。当我单击按钮时,我想从文本框数据创建一个 xml 并将这个 xml 发送到服务器,然后服务器将这个 xml 作为附件返回,我将有一个“另存为”对话框,我可以在本地保存这个 xml。我有以下将 xml 发送到服务器的 jquery 函数:

        function GetXml() {
            var xmlData = '{"xml": "<test>test</test>"}';
            var contentType = "application/json";
            var eDoc = "";
            $.ajax({
                type: 'POST',                         
                url: 'http://localhost/xmlservice.svc/rest/GetXmlToSave',
                data: xmlData,
                contentType: contentType,
                success: function (result) {                        
                    alert(result);
                },
                error: function (result) {                      
                    alert(result);
                },
                async: false,                   
            });
            return result;
        }

但我不知道如何使用服务器返回的 xml 从 javascript 强制“另存为”对话框。

我可以用经典的提交按钮来实现它:

<form action='http://localhost/xmlservice.svc/rest/GetXmlToSave' method="POST" runat="server" >                                
            <input type="submit"/>
        </form>

但在这种情况下,我无法在客户端创建 xml。

是否可以从 javascript 强制另存为对话框?

谢谢。

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

根据答案和 cmets,我决定使用经典表单提交。我会将所有表单提交到服务器,xml 将在服务器端构建。 一些建议的解决方案看起来很不错,但是在我的目标生产环境中存在一些限制。例如。无法安装任何外部组件(例如闪存)。该解决方案也必须在较旧的 IE 8 浏览器中工作(我不能使用所有新的 HTML 5 功能 => 我不能使用 jsfiddle)。看来,经典的 javascript 不支持另存为对话框,尤其是出于安全原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多