AJAX
AJAX是异步网络请求,发送AJAX请求,接受到返回的数据,然后再用JavaScript去更新页面数据,这样就感觉自己始终停留在当前页面,而数据却可以不断地更新。
在现代主流浏览器中AJAX实际上就是一个XMLHttpRequest对象,而对于低版本的IE,则是ActiveXObject对象,所以,在进行一个AJAX请求的时候,我们首先有判断浏览器支持那种方式
在现代主流浏览器中AJAX实际上就是一个XMLHttpRequest对象,而对于低版本的IE,则是ActiveXObject对象,所以,在进行一个AJAX请求的时候,我们首先有判断浏览器支持那种方式
var request;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else {
request = new ActiveXObject('Microsoft.XMLHTTP');
}
我们得到请求对象后,需要设置onreadystatechange回调函数,当请求状态发生变化时触发;通常我们会先判断readyState的值,当值为4表示请求已经完成,然后,再用status==200判断这是否是一个成功的响应;
然后,我们可以使用open()方法设置请求的内容,open()方法有三个参数,第一个是请求的类型,第二个是请求的地址,第三个是是否异步执行,默认为true;
最后,调用send()方法发送请求,当我们使用post类型请求时,可以将body以字符串或者FromData形式传递进去。
request.onreadystatechange = function () { // 状态发生变化时,函数被回调
if (request.readyState === 4) { // 成功完成
// 判断响应结果:
if (request.status === 200) {
// 成功,通过responseText拿到响应的文本:
return success(request.responseText);
} else {
// 失败,根据响应码判断失败原因:
return fail(request.status);
}
} else {
// HTTP请求还在继续...
}
}
// 发送请求:
request.open('GET', '路径');
request.send();
request.open('GET', '路径');
request.send();
alert('请求已发送,请等待响应...');
然而,请求会报错,因为AJAX是异步网络请求,所以会受到安全限制,这是因为浏览器的同源策略导致的,同源指的是请求和被请求的域名相同,协议相同,端口相同;要解决这个问题,有几种解决的办法:
1.通过Flash插件发送HTTP请求
2.使用代理服务器
3.JSONP
4.CORS
明天在研究。。。。。。。。

浙公网安备 33010602011771号