ajax跨域请求数据的问题

如何用ajax跨域获取
https://qrlogin.taobao.com/qrcodelogin/generateQRCode4Login.do?adUrl=&adImage=&adText=&viewFd4PC=&viewFd4Mobile=&from=tbTop&_ksTS=1513304817653_263
返回的值?

这个接口支持jsonp,自己注册个函数,传入callback参数为函数名称就可以获取到数据了


<script>
    function mycallabck(data) {
        alert(data.success)
        alert(data.lgToken)
        alert(JSON.stringify(data,null,4))
    }
</script>
<script src="https://qrlogin.taobao.com/qrcodelogin/generateQRCode4Login.do?adUrl=&adImage=&adText=&viewFd4PC=&viewFd4Mobile=&from=tbTop&_ksTS=1513304817653_263&callback=mycallabck"></script>

现在也知道了怎样来解决跨域问题,余下的就是实现的细节了。实现的过程中错误还是避免不了的。由于不了解json和jsonp两种格式的区别,也犯了错误,google了好久才解决。

首先来看看在页面中如何使用jQuery的ajax解决跨域问题的简单版:

$(document).ready(function(){
var url='http://localhost:8080/WorkGroupManagment/open/getGroupById"
+"?id=1&callback=?';
$.ajax({
url:url,
dataType:'jsonp',
processData: false,
type:'get',
success:function(data){
alert(data.name);
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}});

    json格式:

{
"message":"获取成功",
"state":"1",
"result":{"name":"工作组1","id":1,"description":"11"}
}

dataType:'jsonp' , 不要使用json 可解决 或者 使用 httpclient 解决跨域

前端自定义一个函数传参数到后台,后台获取到,利用httpClient向你想跨域的网址发送请求,将获取到的请求再传回前端

        dataType:'jsonp',就行了吧
 <script type="text/javascript" src="https://cdn.staticfile.org/jquery/1.11.2/jquery.min.js"></script>
<div onclick="test();">测试</div>
<script>
    function test(){
        $.ajax({
            type:'get',
            url:'https://qrlogin.taobao.com/qrcodelogin/generateQRCode4Login.do?adUrl=&adImage=&adText=&viewFd4PC=&viewFd4Mobile=&from=tbTop&_ksTS=1513304817653_263',
            dataType:'jsonp',
            data:'',
            success:function(data){
                console.log(data);
            }

        })
    }


</script>

dataType:'jsonp' 就好,jquery已经封装了jsonp的。

尾部加上“.json”
https://qrlogin.taobao.com/qrcodelogin/generateQRCode4Login.do?adUrl=&adImage=&adText=&viewFd4PC=&viewFd4Mobile=&from=tbTop&_ksTS=1513304817653_263.json

可以用jsonp进行获取相关数据,http://www.runoob.com/json/json-jsonp.html

好像jsonp接受的返回信息必需是jsonp的形式,否则会报错,建议使用java后台做(使用httpClient)

你的服务支持跨域就行了, AJAX 什么也不用改