JSON与JSONP

Shuffle_Z 2016-01-19 11:56:01
请问AJAX在跨域访问时设置datatype为jsonp,服务端返回的数据是json格式的,服务端能正常响应,但这时候不进jquery的success,直接进了error,在网上看到说因为会校验返回的数据格式和请求时的datatype是否一样,这种情况要怎么才能执行success?
LZ请求百度短链接的服务,ajax如下:

$.ajax({
url:"http://baidu.nu/index.php?m=Index&a=create",
type:"GET",
async:false,
data:{url:url},
dataType:"JSONP",
jsonp:"callback",
jsonpCallback:"cb",
success:function(json){
alert(json.status);
},
error:function(XMLHttpRequest,textStatus,errorThrown){
alert(XMLHttpRequest.status);//200
alert(XMLHttpRequest.readyState);//4
}
})
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
slwsss 2016-01-19
  • 打赏
  • 举报
回复
服务端不支持jsonp没用 跨域用代理
天际的海浪 2016-01-19
  • 打赏
  • 举报
回复
只有服务端返回的数据是jsonp格式,才可以实现跨域。 单独在AJAX中设置datatype为jsonp是没用的。
Go 旅城通票 2016-01-19
  • 打赏
  • 举报
回复
json是数据,jsonp是js代码,指定jsonp也没用,不想做代理可以用yql,可以讲跨域数据转为jsonp数据 不过你这个不是单纯返回json数据,要做验证什么的,这个yql也做不了,发送不了验证信息之类的

    $.ajax({
        url: 'http://query.yahooapis.com/v1/public/yql',
        dataType: 'jsonp',
        data: {
            q: "select * from json where url=\"http://baidu.nu/index.php?m=Index&a=create&url="+encodeURIComponent('你的url参数值')+"\"",
            format: "json"
        },
        success: function (d) {
            alert(JSON.stringify(d))//远程json数据放在query.results下
        }
    });

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧