我有一个 html/javascript 前端,它使用 JQuery 的 AJAX 请求将包含用户输入的表单数据的 XML 发送到后端应用程序,后端应用程序又从该信息创建 PDF。前端收到一个 UUID 作为响应,然后在下载 url 中使用它来下载生成的 PDF。
这在 Firefox 和 Safari 中运行良好,但被 Internet Explorer 8 对脚本下载的保护所阻止。告诉 IE8 通过生成的信息栏下载文件会强制重新加载页面,这会清除所有输入的用户内容。
按钮式元素上的单个 onMouseUp 事件触发生成要发送的 XML,发送 XML,获取其响应,然后通过在 window.location 对象中设置 url 来启动下载。将下载分离到不同的按钮(一个生成并发送 xml 并获取 UUID,另一个仅使用由 UUID 生成的 url 启动下载)绕过信息栏,但破坏了界面的简单性和直观性。
以下是相关的javascript函数:
function sendXml()
{
var documentXml = generateDocumentXml();
var percentEncodedDocumentXml = escape(DocumentXml);
var url = "generate?document=" + percentEncodedDocumentXml;
$.ajax({
url: url,
type: "GET",
dataType: "xml",
success: function (xml)
{
var uuid = $(xml).find('uuid').text();
getPdf(uuid);
},
error: function (xhr)
{
alert("There was an error creating your PDF template");
}
});
}
function getPdf(uuid)
{
var url = "generate?get-pdf=" + uuid;
window.location = url;
}
我正在寻找有关如何最好地处理此问题的建议。我的第一选择是让信息栏完全不干扰,但将其危害降至最低将是对当前情况的显着改善。如果它无法重新加载并擦除前端界面,并且当用户通过信息栏的菜单选择“下载文件...”时实际继续下载文件,那将有所帮助。