“如何抓住一个Django”;获得;使用jquery在模板中创建事件?
在我的Django项目中,我有一个生成报告的pdf下载按钮。当我按下按钮时,我想要一个显示报告正在处理的模式。下载pdf时,我希望模态自动隐藏 然而,我在最后一部分遇到了一些问题。我知道Django在下载报告时会在后端发送一条“GET”消息(“GET/download/140/…) 我如何“捕获”模板中的(“GET/download/140/…”)事件 代码:“如何抓住一个Django”;获得;使用jquery在模板中创建事件?,jquery,django,ajax,Jquery,Django,Ajax,在我的Django项目中,我有一个生成报告的pdf下载按钮。当我按下按钮时,我想要一个显示报告正在处理的模式。下载pdf时,我希望模态自动隐藏 然而,我在最后一部分遇到了一些问题。我知道Django在下载报告时会在后端发送一条“GET”消息(“GET/download/140/…) 我如何“捕获”模板中的(“GET/download/140/…”)事件 代码: <a href="{% url 'report-download' object.id %}" class=
<a href="{% url 'report-download' object.id %}" class="btn btn-grey" id="pdf-button"></a>
下载启动时显示“处理”模式
<script type="text/javascript">
$("#pdf-button").on("click", function(){
$('#myPDFModal').modal('show');
});
</script>
$(“#pdf按钮”)。在(“单击”,函数(){
$('myPDFModal').model('show');
});
尝试:使用Ajax完成下载后关闭“处理”模式
<script type="text/javascript">
$(document).on('click', '#pdf-button', function(event)
{
event.preventDefault();
$.ajax({
url: '{% url 'report-download' object.id %}',
type: 'GET',
}).done(function(result) {
$('#myPDFModal').modal('hide');
});
});
</script>
$(文档)。在('单击','pdf按钮'上,函数(事件)
{
event.preventDefault();
$.ajax({
url:“{%url”报告下载“object.id%}”,
键入:“GET”,
}).完成(功能(结果){
$('myPDFModal').modal('hide');
});
});
上述代码似乎可以在右侧的“GET”事件中显示/隐藏模式,但pdf未下载。您可以将
下载和目标=“\u blank”
添加到pdf链接中
这将允许文件在下载时出现,而不会弄乱页面位置(这是我对您试图实现的理解)
接下来,在onclick处理程序中,删除事件。preventDefault()
——这将使链接再次工作。而且不再需要.ajax调用。所以剩下的就是.modal('hide')
:
$(文档)。在('单击','pdf按钮'上,函数(事件){
$('myPDFModal').modal('hide');
});
在这些页面上获取消息-这是服务器的日志。出于安全等原因,无法从前端访问它。如果您启动了请求,您只能等待服务器的回复(这就是您使用ajax调用的.done(…)
部分所做的)
如果您坚持要进行“类似ajax”的下载,请参阅以下答案:谢谢您的回答。实际上,我只想在下载完成后关闭模式框。我不在乎它是Ajax还是Javascript。我尝试了您的解决方案,但在我按下下载按钮后不久启动了.modal('hide')。我想要的是在下载完成后启动.modal('hide')。我明白了,您是否尝试过我链接的答案中的示例?(您应该将$.ajax(…)
替换为获取(…)。然后(…)
并隐藏模式以代替警报(…)
)