2013-02-03 156 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> 

繞過「相同原點策略」的一種方法,因爲此方法跨域工作。希望幫助別人!