【问题标题】:Show Save-As window from JSP从 JSP 显示另存为窗口
【发布时间】:2012-05-11 14:52:26
【问题描述】:

我需要在客户端的文件中写入一个字符串,但是由于 Internet 协议不允许出于安全考虑,这是我所做的解决方法:我有一个 AJAX 请求,它调用一个查询数据库的 JSP得到一个字符串。我需要向用户显示“另存为”对话框并将此字符串写入他们指定的本地路径。

我的 JavaScript 函数:

function openReport(id)
{
    var url = "../reports/reportsHandler.jsp?id=" + id;

    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            //alert(xmlhttp.responseText);
            alert("result obtained");
        }
    }
    xmlhttp.open("POST", url, true);
    xmlhttp.send();
}

在 JSP 中,我有这样的东西:

response.setHeader("Content-Disposition", "attachment;filename=report.xml");
out.println(stringObtainedFromDatabase);

当我收到提示说结果已获得时,我没有看到“另存为”对话框。这是我第一次这样做,如果我做错了什么,你能告诉我吗?

但是,JavaScript 有没有办法向用户显示另存为对话框并将“div”标签的内容写入客户端系统的文件中?

【问题讨论】:

    标签: javascript ajax jsp http-headers xmlhttprequest


    【解决方案1】:

    使用常规 HTTP 请求,而不是 AJAX (XMLHttpRequest) 请求。

    function openReport(id)
    {
        var url = "../reports/reportsHandler.jsp?id=" + id;
        window.location = url;
    }
    

    这将发送一个 HTTP GET,而不是一个 POST,尽管看起来 GET 是在这里使用的正确 HTTP 方法,因为您正在检索数据而不是实际更改服务器上的任何内容。

    【讨论】:

    猜你喜欢
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    相关资源
    最近更新 更多