2011-03-26 48 views
0

在頁面上我有以下幾點:發佈形式與https://開頭行動,隱藏的iframe

<iframe width="1" height="1" name="hidden-iframe"> 
<form id="myform" method="POST" action="https://mysite.com/process-form-data.php" target="hidden-iframe"> 
<input name="data" /> 
<input type="submit" value="Submit" /> 
</form> 
<script type="text/javascript"> 
    $('#myform').submit(function(){ 
     $('#myform').submit(); 
     setTimeout("location.reload(true);",5000); 
     return false; 
    }); 
</script> 

我想要的形式發佈到隱藏的iframe,等待5秒鐘(爲形式數據足夠時間發送),然後刷新頁面。

如果表單動作是http,那麼這個過程就很好。

但是,當表單動作爲https時,當用戶點擊提交時,表單數據將被髮送,並且瀏覽器將加載該表單數據。表單數據不會發布到隱藏的iframe,沒有5秒的超時,並且原始頁面不刷新。

任何想法如何使規定的目標發生?我應該補充一點,表單的動作與頁面本身不同。很顯然,這裏必定會出現某種跨域安全問題。有沒有更好的方法來做到這一點?我願意接受任何建議。

+0

這是在所有瀏覽器中發生的嗎?我只是在Firefox中遇到同樣的問題,它正在中止發佈的請求。 – Diego 2011-05-10 15:40:32

回答

0

是的這是一個跨域安全問題。我相信即使它們在同一個域中,但是其中一個是SSL(https),另一個不是(http),也會遇到同樣的問題。

是否有可能建立服務(在https://mysite.com/)以接收您的文章?然後,您可以做一個AJAX帖子,並根據您網站上JavaScript的響應進行操作。這也會比「等待5秒」更加強大

希望這有助於並且是一個選項。否則,您剩下的選擇是直接重定向到新域名的表單(沒有iframe,整個新頁面),然後重定向回您的網站。笨重,但對最終用戶誠實。一個(真正的,window.open())彈出可能會使它稍微不那麼震撼。