1

我正在使用此处提到的表单帖子加载带有一些帖子数据的 iframe:

你如何发布到 iframe?

一切正常。但是,如果我的 iframe url 中有重定向(通过标头或 javascript 片段),它不会重定向到 iframe 中的下一个 url,而是重定向父窗口。

例如:发布到 iframe :

<form action="do_stuff.aspx" method="post" target="my_iframe">
  <input type="submit" value="Do Stuff!" />
</form>

<!-- when the form is submitted, the server response will appear in this iframe -->
<iframe name="my_iframe" src="not_submitted_yet.php"></iframe>

not_submitted_yet.php:

<?php

// DO some stuff with post data 
// redirect to a success url
header("Location: THE_URL");

?>

问题是 THE_URL 没有在 iframe 本身中打开,而是在完整的浏览器窗口中打开,这是一种不受欢迎的行为。我怎样才能解决这个问题 ?Firefox 和 chrome 中的行为是相同的。

4

3 回答 3

1

我认为这里可能发生的情况是 THE_URL 是一些破坏框架的受保护页面。也许维基百科或其他。使用这样的代码:

if (top.location != location) {
    top.location.href = document.location.href ;
  }
于 2012-04-04T09:03:09.410 回答
0

这并不能直接回答您的问题,但既然您已经在使用 javascript,为什么不通过 AJAX 帖子提交表单呢?返回新 URL 的 jQuery 帖子可以工作:

var submitData = $('#yourForm').serialize();
$.post('/your/url', submitData, function(data) {
    // Probably put some validation on the value coming back in data.
    window.location.href = data;
});
于 2012-04-04T09:03:18.850 回答
0

您可以尝试使用 php 函数file_get_contents,而不是标头重定向。

<?php
$success_page = file_get_contents('http://www.example.com/');
echo $success_page;
?> 
于 2012-04-04T09:08:19.207 回答