正常使用ajax调用java.com
$.ajax({ type: 'get', url: 'http://www.java.com/custinfo?id=888', dataType: 'json', success: function(data){ console.log('成功'); } });
你会发现无法调用
原因:
JavaScript出于安全方面的考虑,不允许跨域调用其他项目。
跨域,由于浏览器同源策略的限制,a.com 无法调用 b.com
解决方案: JSONP
JQuery调用jsonp
var url = 'http://www.java.com/custinfo?id=888&jsoncallback=?';
$.getJSON(url,function(data){ console.log('成功'); });
注意:如果java.com返回的是JSON格式的数据,你是取不到的。
你会发现回调函数并没有调用
json格式示例:
{ "code":"200", "msg":"成功" , "data":[ { "custNo":"100088" "id":"888" } ] }
如果服务端返回的是上面JSON格式的数据你是取不到的。
需要服务端修改代码,返回JSONP格式的数据。
jsonp格式示例:
jsonpcallback( { "code":"200", "msg":"成功" , "data":[ { "custNo":"100088" "id":"888" } ] })
看到两种格式的区别了吗?
参考 https://baike.baidu.com/item/jsonp/493658
参考 https://blog.csdn.net/felcon/article/details/52293044