【问题标题】:jquery fancybox 2 iframe send data to parent via postjquery fancybox 2 iframe 通过 post 向父级发送数据
【发布时间】:2012-12-04 13:04:13
【问题描述】:

我需要使用 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 传递给父级并将公司 ID 作为输入传递。

我错过了什么?

10 倍

【问题讨论】:

    标签: jquery django iframe fancybox


    【解决方案1】:

    我认为您缺少 csrf 令牌。这是一个django mechanism,用于防止跨站点请求伪造。如果您在中间件类中启用了 csrf,而不是在每个发布请求中,您必须在数据中提供“csrfmiddlewaretoken”。您可以使用 {% csrf_token %} 标签从 cookie 或直接在模板中访问它。

    在你的模板中实现这个token后,你需要修改你的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 ) {
    
          // ...
    
        } );
    

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多