2013-02-03 157 views
1

我知道类似的问题已经被问过,但我想知道,如果有人可以帮助找到解决一个具体问题:母公司 - 替代逻辑

我有一个表格,我会喜欢在不同的域中嵌入几个不同的网站。此表单需要重定向到PayPal。该计划是将此表单嵌入到iframe中,使其更容易更新等等,以及嵌入的最少代码。但是,由于相同的来源策略,我不能使用parent.location.href = "http://PaypalPaymentAddress.com";重定向表单。我不想在框架中处理付款(无论如何PayPal禁止这一点)...

唯一的解决办法是我有一个脚本运行并将表单呈现到父页面,调用Web服务等等来获取HTML,但这显然是很多工作!

任何想法,我可能会设置它,让它工作?

回答

2

您可以使用目标属性"_parent"作为表单,在提交时将target-URL加载到父窗口中。

+0

虽然一个障碍...我有服务器端验证运行,并且我不希望重定向发生如果窗体无效。有没有办法可以防止这种情况发生? –

+0

您可以使用ajax在后台执行服务器端验证,并在验证成功时提交表单。 –

+0

我的服务器端验证也是基于交易的,例如,在处理之前检查项目的数量......在AJAX检查之后提交表单会让它对黑客开放。但是,我会尝试返回一个带有空白表单的小型HTML页面,并将其提交给父级(类似于使用JavaScript重定向),并使用Javascript提交此表单。 –

1

我最后的方法是基于莫勒博士的回答,但略有不同。我已经在这里解释它,以防其他人有用:

我设置了通常提交的表单,允许我的所有服务器验证等仅触发一次。如果表单成功提交(通过服务器验证),则包含空表单的小型html客户端页面被回发。

这个空的表单有一个父页面URL的后置动作,并且一个target =“Parent”,并且在客户端的“document ready”上,一个jQuery方法提交表单,导致父页面重新加载。

在脚本被禁用的情况下,还提供了带有“_top”属性的链接。

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     $("#redirectForm").submit(); 
    }); 
</script> 
<a href="{parentpageurl}" id="redirectLink" target="_top">click here if not redirected automatically</a><br /> 

<form id="redirectForm" method="POST" action="{parentpageurl}" target="_parent"> 

</form> 

绕过“相同原点策略”的一种方法,因为此方法跨域工作。希望帮助别人!