ajax的jsonp问题

本文介绍了两种常见的跨域问题解决方法:Jasonp 和 CORS,并通过实例详细解析了如何使用 jQuery 实现 JSONP 请求,同时探讨了回调函数的正确使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.jasonp 和 cors 两种解决跨域问题的方法(后者比较常用)

1.返回数据为jason格式的时候,跨域的问题:(使用jquery的方法,也是同理的)

<script>
    var script=document.createElement('script');
    script.type='text/javascript';

    script.src='http://api.avatardata.cn/SimpleArea/LookUp?key=0ed70ab5cb6d42a2af2426c16eaf34a4&parentId=efa40202-d8a6-494e-88e6-44123bb8ccf6&callback=onBack';
    document.head.appendChild(script);
    function onBack(res) { console.log(res); }

</script>
  问题:

 报错:Uncaught SyntaxError: Unexpected token :

 解决:(交给后台了,让他改一下数据的格式就好)

如果是 JSONP 的话,你 请求 返回的应该是一个回调函数,而不是一个 JS 对象
是服务器的返回值出错了,应该返回的是一个回调函数
强调:
    是服务器端的数据返回值有问题(废了好半天的功夫)
问题解决:
    在使用jQuery的时候,&callback=onBack是不需要你自己写的,jQUery已经封装好了
2.当接口的数据没有问题的时候:(又出现了问题) 这次使用的是jQuery

$.ajax({
    url: 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',
    type: 'get',//注意,jsonp的方式,只可以使用get提交
    dataType: 'jsonp',
    data: {wd: 'h'},  //在这里传参数
   /* success: function (data) {
        console.log('success函数执行成功了')
    },
    error: function (err) {
        console.log('error请求错误')
    }*/
})
    .done(function (data) {
        console.log('done执行了')
    })
    .fail(function (data) {
        console.log('fail执行了')
    });
/*
* 直到上面的步骤,是不可以的,
* 之前说过,使用jasonp的方式,返回的数据需要是回调函数的方式
* 分析返回的数据结构:
*   window.baidu.sug()  ;
* 他返回的确实是一个回调函数,但是这个回调函数我们没有,
* 没有,就自己创建一个呗(其实,本地链百度对象都是没有的)
*
* 关于
*
* */
var baidu = new Object();
baidu.sug = function (data) {
    console.log(data)
}
问题:

 出现在执行顺序上面:

baidu.sug()方法--->fail()方法 (他为什么,就直接走到失败了呢)

解决:

 就直接在sug()里面,写执行语句得了

还有:

 success/error done/file 只不过是新旧版本的两种写法(感觉差不多)

3.参考:

 http://www.cnblogs.com/woider/p/5805248.html

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值