zoukankan      html  css  js  c++  java
  • 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浏览器对编码格式的书写太敏感了。
  • 相关阅读:
    C# 简单的 Job 作业~
    反射反射,程序员的快乐+反射案例:打印和Excel导出
    设计模式:装饰模式(decorate)
    UML类图应该怎么看?
    WebApi 异步请求(HttpClient)
    设计模式:单一职责原则,开放封闭原则,依赖倒转原则,理氏代换原则
    【BOOM】一款有趣的Javascript动画效果
    【深入浅出jQuery】源码浅析2--奇技淫巧
    【深入浅出jQuery】源码浅析--整体架构
    【CSS进阶】原生JS getComputedStyle等方法解析
  • 原文地址:https://www.cnblogs.com/jcz1206/p/5590889.html
Copyright © 2011-2022 走看看