jquery fancybox 2 iframe通过post向父级发送数据

时间:2012-12-04 13:04:13

标签: jquery django iframe fancybox

我需要使用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倍

1 个答案:

答案 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 ) {

      // ...

    } );