码迷,mamicode.com
首页 > Web开发 > 详细

Ajax封装及简单应用

时间:2018-03-22 01:42:33      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:status   UI   navigator   响应   use   xmlhttp   utf-8   版本判断   res   

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

可将AJAX封装成库,方便调用,大致分四步:

  1.     创建Ajax对象
  2.     连接服务器
  3.     发送请求
  4.     接受返回值

具体代码如下:

function ajax(url,fnSucc,fnFaild){
    // 创建Ajax对象
    if(window.XMLHttpRequest){
        var oAjax = new XMLHttpRequest();
    } else {
        var oAjax = new ActiveXobject("Microsoft.XMLHTTP");
    }
    // 连接服务器
    oAjax.open(‘GET‘,url,true); // true表示要通过异步传输

    // 发送请求
    oAjax.send();

    // 接收返回
    oAjax.onreadystatechange = function(){
        if(oAjax.readyState == 4){ // 读取完成
            if(oAjax.status == 200){  // 成功
                fnSucc(oAjax.responseText);
            } else {
                if(fnFaild){
                    fnFaild();
                }
            }
        }
    }
}

通过检测window对象是否有XMLHttpRequest属性来确定浏览器是否支持标准的XMLHttpRequest。这里,不能根据浏览器的navigator.userAgent来检测浏览器是否支持某个JavaScript特性,一是因为这个字符串本身可以伪造,二是通过IE版本判断JavaScript特性将非常复杂。

当创建了XMLHttpRequest对象后,要先设置onreadystatechange的回调函数。在回调函数中,通常我们只需通过readyState === 4判断请求是否完成,如果已完成,再根据status === 200判断是否是一个成功的响应。

readyState有五个值,如下:

0 --> (未初始化)还没有调用open方法

1 -->  (载入)已调用send()方法,正在发送请求

2 -->  (载入完成)send()方法完成,已收到全部响应内容

3 -->  (解析)正在解析响应内容

4 -->  (完成)响应内容解析全部完成,可以在客户端调用了

封装的库取名为 ajax.js,将它引入代码中,就可以直接调用,下面先创建一个数据库 data.txt:

[{name: 张三, password: 123},{name: 李四, password: 321},{name: 王五, password: 456},{name: 小明, password: 654},{name: 小红, password: 789}]

通过点击按钮获取数据:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<script src="ajax.js"></script>
<script>
    window.onload = function() {
        var oBtn = document.getElementById(btn);
        oBtn.onclick = function() {
            ajax(data.txt, function(str) {
                alert(str);
            });
        };
    };
</script>
</head>
<body>
    <input type="button" id="btn" value="读取数据">
</body>
</html>

over!

Ajax封装及简单应用

标签:status   UI   navigator   响应   use   xmlhttp   utf-8   版本判断   res   

原文地址:https://www.cnblogs.com/yan-yubo/p/ajax_encapsulation.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!