ie ajax 跨域情况遇到的各种问题


jQuery.support.cors = true;

http://blog.csdn.net/jupiter37/article/details/25694289 

jQuery ajax跨域调用出现No Transport

IE8下出现的问题,chrome正常,找到了这篇文章

http://www.cnblogs.com/Curious/p/3423275.html
//之前没有加这句老是提示no transport,我没去深想。

    jQuery.support.cors = true;
        $.ajax
        ({
            
            type: "POST",
            contentType: "application/x-www-form-urlencoded",
            dataType: "html",
            url: "http://www.*****.com",  //这里是网址
            success:function(data){alert(data);},
            timeout:30000, 
            error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(errorThrown);
            }
        });

 

jquery.support.cors只是对CORS协议的一种实现,具体可以看jQuery的源代码,这里不多说。

附上几个很好的参考资料:
http://newhtml.net/using-cors/

http://www.kimhou.com/?p=222

http://blog.csdn.net/nuccch/article/details/43086843 

解决IE下返回json数据提示文件保存到问题

在IE9,10,11下,当服务器端返回数据格式为json,且明确设置Content-Type为”application/json;charset=utf-8“时,会提示文件下载。如图所示:


解决办法是修改Content-Type为”text/html;charset=utf-8“,然后在前端对数据做一次JSON编码再进行使用。
该问题只在IE系列下存在,在FF和Chrome上均正常。
详见:http://www.oschina.net/question/223750_123703

 

http://www.shagua.name/post/17.html

JQUERY获取JSON时IE浏览器提示UNDEFINED错误的解决办法

    于是,我用Chrome浏览器分别抓取了可以正常交互的JSON和产生错误的JSON数据,然后对它们的Header部分进行对比:


     这是报错JSON的Header部分:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 23 Jun 2014 13:19:21 GMT
     以及(添加utf8编码后):

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=utf8
Transfer-Encoding: chunked
Date: Mon, 23 Jun 2014 13:19:21 GMT
     这是正常JSON的Header部分:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 920
Date: Mon, 23 Jun 2014 13:27:10 GMT
除去HTTP版本号、状态码、服务器名称以及响应时间,真正不同的只有两行,即第三行和第四行。我随后经过查阅资料得知,“Transfer-Encoding: chunked”和“Content-Length: XXX”是两种不同的传输方式,后者传输的内容长度是固定的,而前者,则适用于不断向浏览器端输出内容的场景。所以,真相只有一个——编码问题!!于是我把编码中的“utf8”改成了“utf-8”,再调试,问题果然华丽丽地解决了!


     因此,原因就是 —— 第一个Header中没有添加字符集;第二个Header中把“UTF-8”字符集的格式写错了,旧版的IE浏览器不能识别编码,仅此而已。所以如果你在写程序的过程中也遇到了JSON变量是“undefined”的情况,不妨先去看看是不是编码出了问题,因为旧版IE浏览器对编码格式的书写太敏感了。

 

posted @ 2016-06-16 14:28  JIN__JIN  阅读(5273)  评论(0编辑  收藏  举报