[英]Post is not working properly on IE9
我正在尝试使用纯HTML在目标iframe中发布表单并接收服务器响应。 到目前为止,我有:
<iframe name="iframe" id="iframe" onload="loaded()" style="display:none"></iframe>
比我有:
<form id="form" action="/rpc/test" method="post" target="iframe">
<!--....... form input ............-->
<input type="submit" class="button" name="Test" id="Test" value="Test">
</form>
最后在脚本标签中,我加载了需要处理响应的函数:
<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>
这在除IE9之外的所有可能的浏览器中都可以正常工作(尽管不要在较低的IE版本上进行测试)。 在IE9中,响应是一个包含正确服务器响应的文件。 IE9问我“您要打开还是保存.....?”
我的服务器是nodejs。 我设定回应:
resposnse.writeHead(200, { 'Content-Type': 'application/json' });
我可以在IE9网络监视器中跟踪Content-Type为'application / json'
有任何想法吗?
在这种情况下,您应该注意Chrome或Firefox从ie9或8发出不同的发布请求
chrome会先发送OPTION请求,然后再发送测试请求,然后发送发布请求,但IE并未如此处理,您应尝试对响应进行更多设置,如下所示
response.header("Content-Type", "application/json;charset=utf-8");
response.header("Access-Control-Allow-Methods","POST,GET,OPTIONS");
response.send("try");
并注意您应该先回复铬
if(request.method==='OPTIONS')
response.send(200);
希望此信息对您有帮助
这似乎是对文件mime类型的担心。 检查服务器是否实际返回application / json输出
这是一些类似的帖子:
在服务器端,当您返回时,请确保将内容类型设置为JSON。
在.NET中,它将类似于
result.ContentEncoding = System.Text.Encoding.UTF8;
result.ContentType = "application/json; charset=UTF-8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.