I'm trying to post form and to receive server response in a target iframe using just plain HTML. What i have so far is:
<iframe name="iframe" id="iframe" onload="loaded()" style="display:none"></iframe>
than i have:
<form id="form" action="/rpc/test" method="post" target="iframe">
<!--....... form input ............-->
<input type="submit" class="button" name="Test" id="Test" value="Test">
</form>
and finally in the script tag i have the function loaded which need to process the response:
<script language="javascript" type="text/javascript">
function loaded() {
var ifr = document.getElementById('iframe');
var dc = ifr.contentWindow || ifr.contentDocument;
if (dc.document) {
dc = dc.document;
}
var rsp = dc.documentElement.innerText || dc.documentElement.textContent;
var obj = JSON.parse(rsp);
if (obj && obj.success === true) {
// DO very important things
return;
}
}
</script>
This works absolutely ok in every possible browser except IE9 (don't test it on lower IE versions though). In IE9 the response is a file which contains the correct server response. IE9 asks me "Do you want to open or save .....?"
My server is nodejs. I set response:
resposnse.writeHead(200, { 'Content-Type': 'application/json' });
I can track in the IE9 network monitor that Content-Type is 'application/json'
Any ideas?