Nodejs之Ajax

AJAX开发框架

AJAX实质上也是遵循B/S模式,所以这个框架基本的流程是:

对象初始化
发送请求
服务器接收
服务器返回
客户端接收
修改客户端页面内容。

只不过这个过程是异步的。

AJAX开发步骤 

1.客户端事件发生,调用Javacsript函数编写的事件处理程序。

2.在事件处理程序中创建XMLHttpRequest对象

3.配置XMLHttpRequest对象

4.XMLHttpRequest对象发送一个异步HTTP请求到服务器

5.服务器程序接收请求,处理请求,返回响应

6.XMLHttpRequest对象调用callback()函数并处理结果

7.更新HTML 

创建XMLHttpRequest对象的方法

 

 

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<label>账号:</label>
<input type="text"/>
<label>密码:</label>
<input type="password"/>
<button onclick="sendMessage()">注册</button>

<script>
    //1.在客户端中用JS调用事件处理程序
    function sendMessage(){
        //2.创建XMLHttpRequest对象
        var xhr;
        if(window.XMLHttpRequest){//js Ajax兼容
            xhr=new XMLHttpRequest();
        }else{
            xhr=new ActiveXObject("Microsoft.XMLHTTP");//IE
        }
        //3.打开连接
        //method请求类型(get、post);URL异步的请求地址;同步或者异步执行配置.这只是配置请求,并没有发起请求
        xhr.open("method","url","同步或者异步执行配置");
        //6 请求完成后,响应后所执行的函数;也就是响应数据给这个函数
        xhr.onreadystatechange=function(){
              //7 更新html数据
        };
        //4 发送请求;如果method是get方法,则send内配置NUll;如果是post方法,则send内配置的是请求的参数
        xhr.send(null);
    }
</script>
</body>
</html>

  在JS第一次执行的时候,

xhr.onreadystatechange=function(){
//7 更新html数据
};这个函数并不会执行,等响应回来后才会执行,发生了一个非阻塞的请求,这个函数叫做回调函数callback()函数。

完全写好后,代码为:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<label>账号:</label>
<input type="text"/>
<label>密码:</label>
<input type="password"/>
<button onclick="sendMessage()">注册</button>

<script>
    //1.在客户端中用JS调用事件处理程序
    function sendMessage(){
        //2.创建XMLHttpRequest对象
        var xhr,a;
        if(window.XMLHttpRequest){//js Ajax兼容
            xhr=new XMLHttpRequest();
        }else{
            xhr=new ActiveXObject("Microsoft.XMLHTTP");//IE
        }
        //3.打开连接
        //method请求类型(get、post);URL异步的请求地址;同步或者异步执行配置.这只是配置请求,并没有发起请求
        xhr.open("get","reg.do",true);//true代表异步 false代表同步
        //6 请求完成后,响应后所执行的函数;也就是响应数据给这个函数
        xhr.onreadystatechange=function(){
              //7 更新html数据
            a=xhr.responseText;//**会把从app.js中回来的数据放在这里
            if(xhr.readyState==4&&xhr.status==200){//添加了这个的属性状态后,打印a就只有一次了
                console.log(a)
            }

        };
        //4 发送请求;如果method是get方法,则send内配置NUll;如果是post方法,则send内配置的是请求的参数
        xhr.send(null);
//        console.log(a);//这里的a是undefined,因为没有执行回调函数,先执行了打印a,所以就是undefined
    }
</script>
</body>
</html>

  

 

 


 

posted @ 2017-01-03 17:05  potato~e-e  阅读(1748)  评论(0编辑  收藏  举报