AJAX

AJAX是异步网络请求,发送AJAX请求,接受到返回的数据,然后再用JavaScript去更新页面数据,这样就感觉自己始终停留在当前页面,而数据却可以不断地更新。
在现代主流浏览器中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();
alert('请求已发送,请等待响应...');

然而,请求会报错,因为AJAX是异步网络请求,所以会受到安全限制,这是因为浏览器的同源策略导致的,同源指的是请求和被请求的域名相同,协议相同,端口相同;要解决这个问题,有几种解决的办法:
1.通过Flash插件发送HTTP请求
2.使用代理服务器
3.JSONP
4.CORS
明天在研究。。。。。。。。
posted @ 2019-11-06 21:39  淡薄幽清  阅读(20)  评论(0)    收藏  举报