zoukankan      html  css  js  c++  java
  • ajax跨域终极解决办法!

    在使用 ajax 的时候,往往需要通过 ajax 跨域请求一些?

    但是 XMLHTTPRequest 是不支持跨域的,所以产生了 JSONP 这个东西来解决跨域,当然解决跨域的方式有很多种....

    第一种解决跨域

    <script type='text/javascript' >
    (function(window){
        //AJAX获取界面信息
        $(function(){
            $.ajax({
                // 豆瓣API接口 
                url:'http://api.douban.com/v2/movie/in_theaters?count=2',
                dataType:"jsonp",
                jsonp:"callback",
                success:function(data){
                    console.log(data);
                }
            });    
        });
    })(window);
    </script>

    这种解决跨域的方式,能够解决一些常规的业务逻辑,但是如果请求:天气的API接口就会有问题

    url:'http://www.weather.com.cn/data/sk/101010100.html'

    第二种解决跨域

    可以再本地的服务器上获取其他服务器的信息,在通过ajax请求本地服务来实现:

    <?php  
    header("content-type:text/html;charset=utf-8");  
    //php代理获取天气信息  
    //跨域请求  
    //天气预报接口  
    $url = "http://www.weather.com.cn/data/sk/101010100.html";  
    $cont = file_get_contents($url);  
    echo $cont;  
    ?>  

    接下来使用 ajax 去请求本地的这个PHP文件即可:

    <script type='text/javascript'>
    $('input.submit').click(function(){
        $.ajax({
            url:"weather.php",
            async:true,
            success:function(result){
                eval("var info="+result); 
                console.log(info['weatherinfo']['city']);
            }
        });
    });
    </script>

    还有其他的方式来解决跨域,同样是通过JSONP的方式,我们可以自己编写JSONP文件,来解决跨域问题:

  • 相关阅读:
    govalidator----结构体tag验证
    结构字段验证--validator.v9
    序列化
    案例:8,64,256都是2的阶次方数(8是2的3次方),用Java编写程序来判断一个整数是不是2的阶次方数。
    易错点
    什么是线程与进程?
    对象与实例的区别?
    什么情况下用断言?assert
    垃圾收集器什么时候回收垃圾?
    HashMap 和 HashTable 的区别
  • 原文地址:https://www.cnblogs.com/e0yu/p/7232892.html
Copyright © 2011-2022 走看看