繁体   English   中英

张贴在IE9上无法正常运作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM