DhruvPathak
DhruvPathak

Reputation: 43265

Posting to iframe, but the iframe redirects the top window to action url instead of self?

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.

Upvotes: 1

Views: 1952

Answers (3)

user783322
user783322

Reputation: 481

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;
?> 

Upvotes: 0

davidethell
davidethell

Reputation: 12018

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;
});

Upvotes: 0

Tei
Tei

Reputation: 1416

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 ;
  }

Upvotes: 1

Related Questions