同源策略ajax
跨域的集中方法:json
一、服務器端發送請求,服務器做爲中繼代理(此方法不理解)跨域
二、iframe服務器
三、script標籤app
經過動過動態生成script標籤,並將src指向目標源的方式(img標籤一樣具備src屬性,用img實現不行嗎?)函數
原生實現方式示例:jsonp
var url="www.xxx.baidu.com/aa.js",url
scriptTag=document.createElement("script");代理
scriptTag.src=url;ip
document.getElementByTagName("head")[0].appendChild(scriptTag);
function showSth(data){
alert(data.a);
}
////////////aa.js
var aa={"a":"A"};
showSth(aa);
jsonp:
使用script標籤實現跨域訪問、可在url中指定回調函數、獲取json數據並在指定的回調函數中執行
jQuery實現jsonp
//$.getJSON
var url="wwwa.xxx.baidu.com/aa.js?callback=?"
$.getJSON(url,function(data){
alert(data.a);
});
//$.ajax;
var url="www.xxx.baidu.com/aa.js"
$.ajax({
url: url,
dataType: jsonp,
success:function(data){
alert(data.a);
}
});
jQuery 只支持get方式的jsonp實現
jsonp的缺點:
若是返回的數據格式有問題或返回失敗了,並不會報錯。