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

时间:2013-11-29 03:45:34

标签: php jquery ajax forms post

我在相关产品链接上使用带有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数据发送给父级,关闭框架,并用额外的数据重新加载父页面?

2 个答案:

答案 0 :(得分:0)

它看起来像这样

$('#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)
});

答案 1 :(得分:0)

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

由于任何产品页面还包含“添加到购物车”逻辑,因此将操作更改为包含其他目标的父页面(或父产品): 1)发送没有ajax的$ _POST数组 2)刷新父页面(现在显示购物车中的项目) 3)刷新当然也会删除颜色框

希望有一天能帮助别人。