$(function(){ $.ajax({ type: "get", async: false, url: "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998", dataType: "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 success: function(json){ alert('您查询到航班信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。'); }, error: function(){ alert('fail'); } }); });
另外推荐一款jsonp跨域独立插件:http://www.uedsc.com/flyjsonp.html
源码:https://github.com/alotaiba/FlyJSONP
原生跨域封装:
function jsonp(setting) { setting.data = setting.data || {}; setting.key = setting.key || "callback"; setting.callback = setting.callback || function() {}; setting.data[setting.key] = "__onGetData__"; window.__onGetData__ = function(data) { setting.callback(data); }; var script = document.createElement("script"); var query = []; for (var key in setting.data) { query.push(key + "=" + encodeURIComponent(setting.data[key])); } script.type="" script.src = setting.url + "?" + query.join("&"); document.head.appendChild(script); document.head.removeChild(script); } jsonp({ url:w, key:'jsoncallback', callback:function(d){ console.log(d) } })