javascript - ajax跨域请求问题求助
天蓬老师
天蓬老师 2017-04-11 12:00:06
[JavaScript讨论组]
function dzxczx(d) {
            console.log(d);
    }
    $('.btn').click(function() {
        $.ajax({
            url : 'https://www.baidu.com/',
            type : 'GET',
            dataType : "jsonp",
            jsonp : "callback",
            success : function (d) {
                console.log(d);
            },
        })
    })    

请问通过jsonp跨域 出现的语法错误要怎么解决啊?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(6)
高洛峰

同上的,jsonp的原理其实就是返回一个字符串,字符串中是一个函数。比如像这样:jsonp(){return /*这里就是服务器返回的真正的数据*/},再具体点就是这样 jsonp(){return "123";},然后你拿到这个字符串,要么把它加入到script标签中去,就能够在下面调用 var data = jsonp(); 得到数据了。

最终原理是:ajax不能跨域,但是 script 标签中引用的地址能够跨域啊,通过这样间接获取数据(蛋疼)。如果会 后端语言(jsp、php、asp),就在后面写一个代理算了,感觉那样和谐点

PHP中文网

谢谢邀请。如楼上几位所说ajax跨域jsonp是需要有jsonpCallback回调函数的。参考如下

$.ajax({ 
    type: "get", 
    async: false, 
    url: "/app/actionInfo", 
    dataType: "jsonp", 
    jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) 
    jsonpCallback: "receive",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 
    success: function(data) { 
        console.log(data.name); 
    }, 
    error: function() { 
        console.log('fail'); 
    } 
}); 
巴扎黑

jsonp跨域需要服务端返回类似

jsonCallback(data);

的数据,百度返回的是首页的html,jsonp无法解析,当然报错。

黄舟

你这是jsonp请求,那你的回调呢?
先好好看看jsonp是什么然后回过头来再写

PHP中文网

先搞懂啥是jsonp。。

黄舟

请先搞清楚如何使用 ajax 跨域请求,不是随便一个 url 就能给你用的,再指出一个错误,dataType 并没有
'jsonp' 这个配置项。

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

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