1

I am loading an iframe with some post data, by using a form post as mentioned here too :

How do you post to an iframe?

Everything works fine. However,if my iframe url has a redirect in it ( through header or javascript snippet), it does not redirect to the next url within the iframe, but instead redirects the parent window.

eg: To post into 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 problem is THE_URL does not open in the iframe itself, instead it opens in full browser window, which is an undesired behaviour. How can I fix this ? The behaviour is same in firefox and chrome.

Community
  • 1
  • 1
DhruvPathak
  • 42,059
  • 16
  • 116
  • 175

3 Answers3

1

I think that what can happend here is that THE_URL is some protected page that break frames. Perhaps wikipedia or other. With a code like this one:

if (top.location != location) {
    top.location.href = document.location.href ;
  }
Tei
  • 1,400
  • 8
  • 6
  • ,nopes the URL I am redirecting you is mine. – DhruvPathak Apr 04 '12 at 09:04
  • 1
    Then perhaps the target don't work for some reason, maybe theres another object in the page with the same name. You can try to modify the name to something more unique, plus add id="thename" to the iframe. So the iframe is named both by name and id. – Tei Apr 04 '12 at 09:06
0

This doesn't directly answer your issue, but since you're already using javascript, why not submit the form via an AJAX post? A jQuery post that returns the new URL could work:

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;
});
davidethell
  • 11,708
  • 6
  • 43
  • 63
0

You could try using the php function file_get_contents, instead of header redirecting.

<?php
$success_page = file_get_contents('http://www.example.com/');
echo $success_page;
?> 
user783322
  • 479
  • 1
  • 8
  • 19
  • The problem with this is that you can't use a parameter from the user in file_get_contents, or else people will start using you page as some sort of proxy to conduct attacks. – Tei Apr 04 '12 at 09:22