ajax与跨域
原生的ajax实现方式是通过XMLHttpRequest对象来实现的,该对象包含了一些方法来进行请求的发送、监听请求过程中的状态、接收响应内容等: var xhr = new XMLHttpRequest();
xhr.onReadyStateChange = function() {
if (xhr.readyState === 4) { //不使用this更靠谱
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
alert(xhr.responseText);
}
};
xhr.open('get','url',true);
xhr.setRequestHeader('name','value');
xhr.send(null); //不发送任何内容必须使用null
此外,如果需要在url上加参数,必须使用 插播一下URL编码:RFC 1738规定:
而不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。并且URL本身和后面追加的查询参数的编码方式很可能不同。这样会比较混乱,因此可以提前使用JS对URL进行编码,使得统一,而不直接通过浏览器。 参考: 跨域当异步请求地址的协议、主域名、子域名(例如www)、端口号中有任何一个同源页面不同,则是一次跨域请求。 跨域资源共享CORS是W3C的一个工作草案。是通过头部来进行浏览器和服务器间的沟通。 现代浏览器已经通过原生的 参考: JSONP跨域资源共享方式比JSONP更强大,前者支持所有请求方式,而后者只支持 //1. 声明一个回调函数
function callback(data) {
//deal with data
}
//2. 动态生成一个script标签并插入文档树
var script = document.createElement('script');
script.src = 'http://write.blog.csdn.net?callbackName=callback';
document.getElementsByTagName("head")[0].appendChild(script);
还有一些其他跨域方式: 访问未声明的变量会报错,但访问不存在的对象的属性不会报错,返回 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |