邮件在IE9上无法正常运行

时间:2012-03-13 12:59:10

标签: javascript html node.js internet-explorer-9

我正在尝试使用纯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'

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

似乎是一个糟糕的文件mime类型问题。检查服务器是否实际返回application / json输出

以下是一些类似的帖子:

答案 1 :(得分:0)

在返回时在服务器端确保将内容类型设置为JSON。

在.NET中,它会像,

result.ContentEncoding = System.Text.Encoding.UTF8; 
result.ContentType = "application/json; charset=UTF-8

答案 2 :(得分:0)

在这种情况下,你应该注意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");

并注意你应该首先回复chrome

if(request.method==='OPTIONS')

 response.send(200);

希望此信息可以帮助您