我需要使用post将数据从fancybox iframe传递到我的django视图。 我将iframe标题设置为用户可以单击的“a href”链接。
这是fancybox的代码:
$(".fancybox-company").fancybox({
width : '75%',
height : '75%',
autoSize : false,
closeClick : false,
fitToView : false,
openEffect : 'none',
closeEffect : 'none',
type : 'iframe',
beforeLoad: function() {
var id = $(this.element).data('company-id');
this.title = "<a href=\"\" id=company-iframe>Add to your list</a>";
}
});
这是侦听点击事件的代码:
$( ".company-iframe" ).on( 'click', function ( event ) {
event.preventDefault();
var id = event.target.href;
$.post( "/company/selection", { id : id }, function ( json ) {
// ...
} );
这没有被调用,我需要将iframe中的click事件传递给父级,并将公司ID作为输入传递。
我错过了什么?
10倍
答案 0 :(得分:0)
我认为你缺少csrf令牌。它是django mechanism,用于防止跨站请求伪造。如果您的中间件类中启用了csrf而不是每个发布请求,则必须在数据中提供“csrfmiddlewaretoken”。您可以使用{%csrf_token%}标记从Cookie或模板中直接访问它。
在模板中实现此标记后,您需要修改js函数,如
$( ".company-iframe" ).on( 'click', function ( event ) {
event.preventDefault();
var csrfmiddlewaretoken = $('input[name=\"csrfmiddlewaretoken\"]').val();
var id = event.target.href;
$.post( "/company/selection",
{ id : id , csrfmiddlewaretoken: csrfmiddlewaretoken},
function ( json ) {
// ...
} );