JS深入-Ajax和跨域


如何创建一个Ajax

Ajax概念

Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术

创建Ajax的步骤
1、创建Ajax对象

var oAjax;
if(window.XMLHttpRequest){
//兼容IE7+,Firefox,Chrome,OPera,Safari
oAjax=new XMLHttpRequest();
}
else{
//兼容IE5,IE6
oAjax=new ActiveXObject(“Microsoft.XMLHTTP”);
}

2、连接到服务器&发送请求

oAjax.open(method,url,async);
oAjax.send(string);//post请求时才使用字符串参数

3、接收返回值

OAjax.onreadystatechange=function(){
if(oAjax.readyState==4 && oAjax,status==200){
alert(“请求成功”+oAjax.responseText);
}
else{
alert(“请求失败”+oAjax.status);
}
}

产生跨域的原因&解决跨域的问题

什么是跨域
跨域指的是浏览器不能执行其他网页的脚本,比如在网站中使用Ajax请求其他网站的天气或其他数据的接口

产生跨域的原因
由浏览器同源策略造成(同域名,同端口,同协议)

解决跨域方案一
服务端:header(“Access-Control-Allow-Origin:*“);
星号表示所有域都可以接受(IE10以下不行)

解决跨域方案二
动态创建script标签,使用jQuery的jsonp请求
兼容性强不受同源策略限制(只能使用get方法,不能使用post方法)

解决跨域方案三
基于iframe实现,在两个页面中同时添加document.domain(只有主域名相同的情况下可以使用)

解决跨域方案四
web sockets(只有在支持web sockets协议的服务器上才能正常工作)

jsonp为什么不是真正的Ajax

1、Ajax的核心是通过XMLHTTPRequest获取数据
2、jsonp的核心是动态添加


文章作者: COOL
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 COOL !
评论
  目录