gpt4 book ai didi

javascript - ajax/html/javascript 解决方案禁用报告生成按钮然后可更新

转载 作者:行者123 更新时间:2023-11-28 10:33:10 29 4
gpt4 key购买 nike

我有一个 Controller (Spring-MVC),可以根据获取请求生成 PDF 报告。 Controller 设置诸如“application/OCTET-STREAM”、“Content-Disposition”、“attachment; filename=\”” + filename + “\””之类的 header ,以便用户强制打开保存/打开对话框。 Controller 获取生成的 pdf 并将 pdf 字节直接写入响应的输出流。返回的ModelAndView为null。

问题是我需要/想要禁用单击后生成报告请求的按钮,然后在报告完成后重新启用它,以防止双击。

我想我可以使用prototype.org的Ajax.Request来做到这一点...这段代码确实可以正常使用按钮,但后来我陷入困境,因为客户端永远无法获取pdf。我想我需要对响应做一些事情,但我不知道做什么。任何想法/帮助表示赞赏。

function displayPdf(button_b, pdf_url) {
button_b.disabled = true;
new Ajax.Request(pdf_url, {
asynchronous:true,
evalScripts:true,
method:'get',
onComplete: function(response) {
button_b.disabled = false;
},
onFailure: function() {
redAlert('crap');
}
});
}

最佳答案

我认为完成你想要的一切的最好方法,假设你仍然强制下载,我认为是这样的:

<html>
<head>
<script>
function get_it() {
document.getElementById('the_button').disabled = true;
document.getElementById('the_frame').src = "http://www.ca3.uscourts.gov/opinarch/063575p.pdf";
}
function enable_button() {
document.getElementById('the_button').disabled = false;
}
</script>
</head>
<body>
<iframe id='the_frame' onload='enable_button()'></iframe>
<button id='the_button' onclick='get_it()'>Get it</button>
</body>
</html>

基本上,您告诉它将其发送到 iframe,而不是使用 AJAX 请求。一旦 pdf 准备好,iframe 的 onload 事件将触发,重新启用按钮。您可能希望为此使用实际的事件监听器,而不是我在示例中使用的已弃用的内联监听器:P

关于javascript - ajax/html/javascript 解决方案禁用报告生成按钮然后可更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434957/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com