2012-03-12 53 views
2

我一直在试图找出这一个了几个星期,现在只有平庸的结果。由于我缺乏对Jquery的知识和最小的Javascript知识,所以我已经拼凑了一些在网络上发现的代码,我相信这是错误的。我正在使用Colorbox在iframe中显示带有添加到购物车按钮的产品(父级和iframe都是来自我的服务器的页面)。我希望的结果是:关闭颜色框iframe后表单提交,然后重定向父页

(编辑为清楚起见)

  1. 有添加到购物车按钮,表单数据传递到上提交父。
  2. 传递表单后关闭Colorbox iframe。
  3. 父框架提交表单。

到目前为止,我已经在我的iframe中使用下面的代码形式:

<form name="cart_quantity" action="index.php?action=add_product" method="post" 
enctype="multipart/form-data" onSubmit="parent.$.fn.colorbox.close();"> 
<input type="hidden" name="qty" value="1" /> 
<input type="hidden" name="id" value="7" /> 
<input type="hidden" name="attri" value="17" id="attri-17" /> 
<input class="cssButton button" type="submit" value="ADD TO CART"/> 
</form> 

我的脚本的父页面上调用颜色框是:

<script> 
function lightbox(){  
    $.fn.colorbox({ 
    iframe:true, 
    onClosed:function(){ window.location = 'index.php?main_page=shopping_cart'; }, 
    href:"./index.php?main_page=product_info&id=7"}); 
} 
</script> 

所以问题至今:

当表单提交时颜色框关闭并且表单仅提交一半时间(部分成功率)。我试图用萤火虫追踪发布的数据,试图看看它是否每次发布,但因为它来自iframe,我似乎无法看到任何东西。

如果有人可以帮我解决这个问题,我会非常感激!

+0

感谢您花时间撰写您的请求;也许是我,但我仍然困惑。特别是“添加到购物车按钮提交到父页面”不适用于我。考虑进一步分解它:你可以使用iframe框来捕获**用户意图**,并简单地关闭将该意图传递给父母,然后实际上提交?由于iframe是一个孩子,您可以完全访问父母的DOM和内存。此外,请澄清,如果你的标记是iframe或父母。 – 2012-03-13 03:21:59

+0

@Kevin M,我可以看到我的描述可能会让人困惑,我真的很努力地将我试图完成的目标放在文字上。我编辑了我的代码,以显示哪些是父母或iframe。您关于从iframe向父母传递用户意图(我认为您的意思是表单数据?)的意见,然后让父母提交数据是对我的目标的很好的描述。这绝对使它更容易理解。现在我会从哪里开始试图正确地实现这一点。 – skylab 2012-03-14 04:01:00

+0

@Kevin M,想一想更多,我会首先将我的表单中的onSubmit改为onClick,它会调用父类上的某种脚本;那会关闭Colorbox窗口并提交表单? – skylab 2012-03-14 04:18:12

回答

0

你可以尝试,并添加延迟:

onSubmit="window.setTimeout(function(){parent.$.fn.colorbox.close();}, 150);" 

更改150的任何值是必要的,以确保请求被发送。

了解更多关于setTimeout here