我在页面上有以下内容:
<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时,当用户点击提交时,表单数据将被发送并且浏览器会加载https://mysite.com/process-form-data.php。表单数据不会发布到隐藏的iframe,没有5秒超时,并且原始页面不会刷新。
知道如何实现既定目标吗?我应该补充一点,表单的操作与页面本身不同。显然,这里肯定会出现某种跨域安全问题。有没有更好的方法来做到这一点?我愿意接受任何建议。
答案 0 :(得分:0)
是的,这是一个跨域安全问题。我相信你有同样的问题,即使他们在同一个域,但一个是SSL(https)而另一个不是(http)。
是否可以构建服务(https://mysite.com/)来接收您的帖子?然后,您可以执行AJAX帖子并使用您网站上的JavaScript响应操作。这也比“等待5秒”
更强大希望这有帮助并且是一种选择。如果做不到这一点,您的剩余选项是直接重定向到新域的表单(无iframe,全新页面),然后重定向回您的站点。笨重但对最终用户诚实。一个(真实的,window.open())弹出窗口可能会使它稍微不那么刺耳。