我在相关产品链接上使用带有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数据发送给父级,关闭框架,并用额外的数据重新加载父页面?
答案 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)刷新当然也会删除颜色框
希望有一天能帮助别人。