ajax跨域问题解决方法

在网上看到了很多解决方法,前端,后端,NGINX代理等等。  总之没找到一个解决问题关键的内容。

今天终于找到了。

我们常常要调用API,那么从外部调用返回数据,就涉及到了跨域问题。

js调用部分

$.ajax({
                url:"http:XXX.XXX.xom/XX.php",
                dataType:"jsonp",
                processData: false,
                type:"get",
                jsonp:"callback",  //不设置默认为"callback"
                success:function(data){ 
                    console.log(data);
                },
                error:function(XMLHttpRequest, textStatus, errorThrown){
                     console.log(XMLHttpRequest.status);
                       console.log(XMLHttpRequest.readyState);
                       console.log(textStatus);
                }
            })

 

重点问题:跨域后ajax是根据get传统函数调用实现数据获取的需要在服务端通过get获取callback值然后拼接到需要返回的json传前面。

php的服务响应端

    $callback = $_GET['callback'];
    //关键是这个。若是在ajax()内设置了jsonp:"callback",那么填写callback,没有设置则直接填写callback(默认值)
    exit($callback."(".json_encode($arr).")");

 

我们往往的误区是,直接获取了返回数据,并没有把ajax产生的callback值一起返回。这样就会导致浏览器跨域错误代码提示。

当然网上也有说关闭浏览器跨域,也有说使用nginx做代理的, 单我觉得并不是根源问题。 我们设计着主要就是要设计出通用的功能,这样不仅在后期开发调用的时候方便,也会减少产生的问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片