jquery将带有$_POST数组的表单提交给父级


jquery submit form with $_POST array to parent

我在相关产品链接上使用带有iframe的colorbox jquery插件,因为我不希望人们离开当前产品页面,但我仍然想要一个相关产品的链接,因此:

$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});

打开另一个检测到在框架中打开的产品页面:

if(window.parent.frames.length > 0) { ...some css changes here...

该框中唯一可点击的项目是"添加到购物车"按钮,该按钮将相关产品添加到购物篮中。为此,表单提交给PHP_SELF。意味着该页面必须使用$_POST数组重新加载。这很好,但单击时我想关闭该帧,然后重新加载父帧。

    $('#addtocartbutton').click(function() {
    document.cart_quantity.submit(); //this would reload page (in frame)
    parent.$.colorbox.close(); //closing frame stops the submit/reload
    parent.window.location.reload(true); //parent reloads but nothing added to cart 
});

这将提交表单、关闭框架并重新加载父级,但提交没有足够的时间实际"添加到购物车"。有没有一种方法可以将$_POST数据发送到父页面,关闭框架,然后用额外的数据重新加载父页面?

它看起来像这个

$('#addtocartbutton').click(function() {
    var p = parent;
    document.cart_quantity.submit(function(){
        $.ajax({
           type: "POST",
           url: url,
           data: data,
           success: function(data){
                p.$.colorbox.close(); //closing frame stops the submit/reload
                p.window.location.reload(true); //parent reloads but nothing added to cart 
           }
         });
    }); //this would reload page (in frame)
});

以下是对我有效的方法。我在iframe中修改了表单本身:$("form[name='cart_quantity']").prop('target','_top').prop('action',parent.window.location.href+'?action=add_product');

由于任何产品页面也包括添加到购物车逻辑,将操作更改为具有附加目标的父页面(或父产品)会导致:1) 发送不带ajax的$_POST数组2) 刷新父页面(现在显示购物车中的项目)3) 当然,刷新也会删除色盒

希望有一天这能帮助到其他人。