javascript - jsonp跨域请求失败
PHP中文网
PHP中文网 2017-04-11 10:43:11
[JavaScript讨论组]
$.ajax({
    url: "https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001",
    jsonp: "callback",
    dataType: "jsonp",
    data: {
        match_id:27110133,
        key: '2B58A9C96FD73EC323CCFDA5383C4BBC',
        format: "json"
    },
    success: function( response ) {
        console.log( response ); // server response
    }
});

这样请求一定要在服务器端设置格式为jsonp吗?或者说客户端有什么方法能解决这种跨域的GET请求。
现在json格式非打印错误

V001:2 Uncaught SyntaxError: Unexpected token :

能不能帮我解答下,谢谢~

PHP中文网
PHP中文网

认证0级讲师

全部回复(6)
天蓬老师

JSONP的原来是用script加载一段服务端根据参数生成的函数,然后在本地执行。
jQuery会在本地保存一个临时函数 类似于
window.callback = function (res) {
// ...
}
然后服务端返回的script脚本里是一个刚刚之前的函数callback({...obj})
但是你现在调用的api依然返回的是json字符串,js解析当然报错。

无论是使用access-control-allow-origin 还是 jsonp都需要服务端支持
所以你让你们的后端做一个托传吧,前端不用做任何处理,你访问自己的服务器 服务端再去调用你这个第三方api接口

阿神

感觉题主应该是没明白 jsonp 的使用原理

并不是 "服务端设置"

PHPz

题主把服务器端返回的内容一并贴出来看看吧,应该是后端返回的数据格式有问题。

巴扎黑

很可能你服务端返回的只是json数据而非jsopnp数据

ringa_lee

感觉楼主还不太明白JSON P的实现原理,可以看看之前我写的一篇文章https://segmentfault.com/a/1190000004761...

大家讲道理

jsonp与ajax是有区别的
jsonp的原理是在页面中插入script标签, 所以服务器返回的格式, 应当是js代码, 类似

callback({

'name': 'json'

});

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号