跨域问题是由于javascript语言安全限制中的同源策略造成的.
简单来说,同源策略是指一段脚本只能读取来自同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合
JS原生解决跨域问题:
<script type="text/javascript">
var result = null;
window.onload = function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "ip地址/api";
var head = document.getElementsByTagName("head")[0];
head.insertBefore(script, head.firstChild);
};
function callback(data) {
result = data;
}
function click() {
alert(result.name);
}
</script>
2、jqurey解决跨域问题:
$.ajax({
async: false, //是否异步
url: "ip地址/api", //请求地址
type: "GET", //请求类型
dataType: 'jsonp', //数据类型
//jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象.
jsonp: 'jsoncallback',
//要传递的参数,没有传参时,也一定要写上
data: null, //请求的时间
timeout: 5000,
//返回Json类型
contentType: "application/json;utf-8", //请求头设置
//服务器段返回的对象包含name,data属性.
success: function (result) { //成功时回调的方法
alert(result.date);
},
error: function (jqXHR, textStatus, errorThrown) { //错误时返回的提示
alert(textStatus);
}
});