“如何抓住一个Django”;获得;使用jquery在模板中创建事件?

“如何抓住一个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=

在我的Django项目中,我有一个生成报告的pdf下载按钮。当我按下按钮时,我想要一个显示报告正在处理的模式。下载pdf时,我希望模态自动隐藏

然而,我在最后一部分遇到了一些问题。我知道Django在下载报告时会在后端发送一条“GET”消息(“GET/download/140/…)

我如何“捕获”模板中的(“GET/download/140/…”)事件

代码:

<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(…)
替换为
获取(…)。然后(…)
并隐藏模式以代替
警报(…)