Day06 Ajax

一   Ajax

1.ajax同步(GET)

异步无刷新技术。能够请求后台发送和获取数据,而无需卸载页面(刷新页面)。

核心对象:
                    XMLHttpRequest对象
                    var  xhr = new XMLHttpRequest()
在使用 XHR 对象时,先必须调用 open()方法,它接受三个参数:要发送的 请求类型(get、post)、请求的 URL 和表示是否异步。open()方法并不会真正发送请求,而只是启动一个请求以备发送。
                通过 send()方法进行发送请求,send()方法接受一个参数,作为请求主体发送的数据。如果不需要则,必须填 null。执行 send()方法之后,请求就会发送到服务器上。
                    
                    
发送的请求的步骤:
(1)、得到XMLHttpRequest对象
                        new XMLHttpRequest()
(2)、准备请求   open(请求类型GET/POST,请求的URL,是否异步)  
                        xhr.open(请求类型GET/POST,请求的URL,是否异步);
(3)、发送请求     send([参数])
                        xhr.send([参数])
                        注:如果是GET请求,请求的参数设置在url的后面,所以send(null)
                            如果是POST请求,无参数设置为null,有参数则设置参数即可

(4)、判断响应状态,得到后台响应
                        xhr.responseText;

        // 1、得到XMLHttpRequest对象
        var xhr = new XMLHttpRequest();
        console.log(xhr);
        

        // 2、准备请求   open(请求类型GET/POST,请求的URL,是否异步)  
        xhr.open("GET","js/data.json?uname=zs",false); // 同步请求
        console.log("open...");
        

        // 3、发送请求     send(参数)
        //xhr.send("uname=zhangsan&upwd=123456"); // Post请求有参数,则设置
        xhr.send(null);
        console.log("send...");
        
        

        // 4、判断响应状态,得到后台响应得到后台响应  xhr.responseText;
        if (xhr.status == 200) {
            var responseTxt = xhr.responseText;
            console.log(responseTxt);
        } else {
            alert("状态码:" + xhr.status + ",错误信息:" + xhr.responseText);
        }
        
        console.log("测试...");
       

2.ajax异步(GET)


核心对象:
                    XMLHttpRequest对象
                    var  xhr = new XMLHttpRequest()
                在使用 XHR 对象时,先必须调用 open()方法,它接受三个参数:要发送的 请求类型(get、post)、请求的 URL 和表示是否异步。open()方法并不会真正发送请求,而只是启动一个请求以备发送。
                通过 send()方法进行发送请求,send()方法接受一个参数,作为请求主体发送的数据。如果不需要则,必须填 null。执行 send()方法之后,请求就会发送到服务器上。
                    
                    
发送的请求的步骤:
(1)、得到XMLHttpRequest对象
                        new XMLHttpRequest()
(2)、准备请求   open(请求类型GET/POST,请求的URL,是否异步)  
                        xhr.open(请求类型GET/POST,请求的URL,是否异步);
(3)、发送请求     send([参数])
                        xhr.send([参数])
                        注:如果是GET请求,请求的参数设置在url的后面,所以send(null)
                            如果是POST请求,无参数设置为null,有参数则设置参数即可
(4)、判断响应状态,得到后台响应
                        xhr.responseText;
                        
                        
                同步调用固然简单,但使用异步调用才是我们真正常用的手段。
                使用异步调的时候,检测 readyState 属性,每当 readyState 属性改变时,触发readystatechange 事件。
                这个属性有五个值:
                值             状态         说明
                0             未初始化     尚未调用 open()方法
                1             启动         已经调用 open()方法,但尚未调用 send()方法
                2             发送         已经调用 send()方法,但尚未接受响应
                3             接受         已经接受到部分响应数据
                4             完成         已经接受到全部响应数据,而且可以使用

        // 1、得到XMLHttpRequest对象
        var xhr = new XMLHttpRequest();
        console.log(xhr);
        

        // 2、准备请求   open(请求类型GET/POST,请求的URL,是否异步)  
        xhr.open("GET","js/data.json",true); // 异步请求
        console.log("open...");
        

        // 3、发送请求     send(参数)
        //xhr.send("uname=zhangsan&upwd=123456"); // Post请求有参数,则设置
        xhr.send(null);
        console.log("send...");
        
        

        // 4、判断响应状态,得到后台响应得到后台响应  xhr.responseText;
        // 如果是异步请求,需要先知道数据是否完全响应
        // 监听readyState的值的变化
        xhr.onreadystatechange = function() {
            console.log(xhr.readyState);
            // 判断是否完全响应,即readyState的值等于4
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    var responseTxt = xhr.responseText;
                    console.log(responseTxt);
                } else {
                    alert("状态码:" + xhr.status + ",错误信息:" + xhr.responseText);
                }
            }
        }
        
        console.log("测试...");
       

 

3.ajax同步(POST)

        // 1、得到XMLHttpRequest对象
        var xhr = new XMLHttpRequest();
        console.log(xhr);
        

        // 2、准备请求   open(请求类型GET/POST,请求的URL,是否异步)  
        xhr.open("POST","js/data.json",false); // 同步请求
        console.log("open...");
        

        // 模拟表单提交
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        

        // 3、发送请求     send(参数)
        //xhr.send("uname=zhangsan&upwd=123456"); // Post请求有参数,则设置
        xhr.send("uname=zs&upwd=123");
        console.log("send...");
        
        

        // 4、判断响应状态,得到后台响应得到后台响应  xhr.responseText;
        if (xhr.status == 200) {
            var responseTxt = xhr.responseText;
            console.log(responseTxt);
        } else {
            alert("状态码:" + xhr.status + ",错误信息:" + xhr.responseText);
        }
        
        console.log("测试...");

4.ajax异步(POST)

        // 1、得到XMLHttpRequest对象
        var xhr = new XMLHttpRequest();
        console.log(xhr);
        

        // 2、准备请求   open(请求类型GET/POST,请求的URL,是否异步)  
        xhr.open("POST","js/data.json",true); // 异步请求
        console.log("open...");
        

        // 模拟表单提交
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        

        // 3、发送请求     send(参数)
        //xhr.send("uname=zhangsan&upwd=123456"); // Post请求有参数,则设置
        xhr.send(null);
        console.log("send...");
        
        

        // 4、判断响应状态,得到后台响应得到后台响应  xhr.responseText;
        // 如果是异步请求,需要先知道数据是否完全响应
        // 监听readyState的值的变化
        xhr.onreadystatechange = function() {
            console.log(xhr.readyState);
            // 判断是否完全响应,即readyState的值等于4
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    var responseTxt = xhr.responseText;
                    console.log(responseTxt);
                } else {
                    alert("状态码:" + xhr.status + ",错误信息:" + xhr.responseText);
                }
            }
        }
        
        console.log("测试...");
       

5.封装ajax

调用者:
            请求类型    GET/POST
            请求路径
            请求参数
            是否异步
    
封装Ajax
(1)、得到XMLHttpRequest对象
                new XMLHttpRequest()
(2)、打开请求   open(请求类型GET/POST,请求的URL,是否异步)  注:三个参数都是由调用者传递
                注:判断如果是POST请求,请求路径直接设置即可;如果是GET请求,需要拼接请求参数;
(3)、发送请求     send([参数])
                xhr.send([参数])
                注:如果是GET请求,请求的参数设置在url的后面,所以send(null)
                      如果是POST请求,无参数设置为null,有参数则设置参数即可
(4)、判断响应状态,得到后台响应
                xhr.responseText;
                注:判断是否是异步请求,如果是同步则直接获取响应数据;如果是异步,则需要先判断数据是否完全响应(readyState==4),再获取响应数据
   

 

// 用户A
    var userA = {
        type:"GET",
        url:"js/data.json?a=1",
        data:{
            uname:"zhangsan",
            upwd:"123456"
        },
        async:true,
        success:function(result){
            console.log(result);
        },
        error:function(result) {
            console.log(result);
        }
    };
    ajax(userA);
    
    
  
 // 用户B
    var userB = {
        type:"POST",
        url:"js/data.json",
        data:{
            uname:"zhangsan",
            upwd:"123456"
        },
        async:false,
        success:function(result){
            alert(result);
        },
        error:function(result) {
            console.log(result);
        }
    };
    ajax(userB);
    
    
    
    
    ajax({
        type:"POST",
        url:"js/data.json",
        data:{
            uname:"zhangsan",
            upwd:"123456"
        },
        async:false,
        success:function(result){
            alert(result);
        },
        error:function(result) {
            console.log(result);
        }
    });
    
    function ajax(obj) {

        // 1、得到XMLHttpRequest对象
        var xhr = new XMLHttpRequest();
        
        
// 2、打开请求   open(请求类型GET/POST,请求的URL,是否异步)  注:三个参数都是由调用者传递
        // 注:判断如果是POST请求,请求路径直接设置即可;如果是GET请求,需要拼接请求参数;
        /*
            
格式化参数
            data:{
                uname:"zhangsan",
                upwd:"123456"
            }
            ---->  uname=zhangsan&upwd=123456
        */
      
 // 格式化参数
        obj.data = formatParam(obj.data);
        // 判断是否是GET请求
        if (obj.type.toUpperCase() == "GET") { // GET请求
            // 拼接参数
            obj.url += (obj.url).indexOf("?") > -1 ? "&" +obj.data : "?" +obj.data;
        }
        xhr.open(obj.type,obj.url,obj.async);
        
        
      
 // 3、发送请求     send([参数])
        if (obj.type.toUpperCase() == "POST") { // POSTt请求
            //
模拟表单提交
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            //
发送请求
            xhr.send(obj.data);
            
        } else { // GET请求
            xhr.send(null);
        }
        
        
        
      
 // 4、判断响应状态,得到后台响应
        // 判断是否是异步请求
        if (obj.async) { // 异步请求
            // 如果是异步请求,需要先知道数据是否完全响应
            // 监听readyState的值的变化
            xhr.onreadystatechange = function() {
                // console.log(xhr.readyState);

                // 判断是否完全响应,即readyState的值等于4
                if (xhr.readyState == 4) {
                    callback();
                }
            }
            
        } else { // 同步请求
            callback();
        }
        
        /*

            获取响应结果
         */
        function callback() {
            if (xhr.status == 200) {
                var responseTxt = xhr.responseText;
                // console.log(responseTxt);
                
                //
调用成功的回调函数
                obj.success(responseTxt);
                
            } else {
                // alert("状态码:" + xhr.status + ",错误信息:" + xhr.responseText);
                // 调用失败的回调函数
                obj.error("状态码:" + xhr.status + ",错误信息:" + xhr.responseText);
            }
        }
        
    }
            
            
    /**

     * 将对象形式的参数转换成字符串
            格式化参数
            data:{
                uname:"zhangsan",
                upwd:"123456"
            }
            ---->  uname=zhangsan&upwd=123456
     */
    function formatParam(data) {
        var arr = [];
        for(var key in data) {
            //console.log(key,data[key]);
            var str = key+"="+data[key]; // uname=zhangsan

            // 将数组追加到数组中
            arr.push(str);
        }
        // console.log(arr);
        // 将数组转换成字符串
        var params = arr.join("&");
        return params;
    }

           

二   Jquery和Ajax

1.ajax

$.ajax()
       jquery 调用 ajax 方法:
       格式:$.ajax({});

       参数:
                type:请求方式 GET/POST
                url:请求地址 url
                async:是否异步,默认是 true 表示异步
                data:发送到服务器的数据
                dataType:预期服务器返回的数据类型
                contentType:设置请求头
                success:请求成功时调用此函数
                error:请求失败时调用此函数

 

$.ajax({
        type:"post",
        url:"js/data.json",
        data:{
            
        },
        dataType:"json", // 预期返回的数据的类型
        success:function(data){
            console.log(data);
        }
    });

2.get

(1).请求 json 文件,忽略返回值
            $.get('../js/cuisine_area.json');
(2).请求 json 文件,传递参数,忽略返回值
            $.get('../js/cuisine_area.json',{name:"tom",age:100});
(3).请求 json 文件,拿到返回值,请求成功后可拿到返回值
            $.get('../js/cuisine_area.json',function(data){
                console.log(data)
            });
(4).请求 json 文件,传递参数,拿到返回值
            $.get('../js/cuisine_area.json',{name:"tom",age:100},function(data){
                console.log(data)
            });

3.post

(1).请求 json 文件,忽略返回值
            $.post('../js/cuisine_area.json');
(2).请求 json 文件,传递参数,忽略返回值
            $.post('../js/cuisine_area.json',{name:"tom",age:100});
(3).请求 json 文件,拿到返回值,请求成功后可拿到返回值
            $.post('../js/cuisine_area.json',function(data){
                console.log(data)
            });
(4).请求 json 文件,传递参数,拿到返回值
            $.post('../js/cuisine_area.json',{name:"tom",age:100},function(data){
                console.log(data)
            });

4.getJSON

得到的是对象

$.getJSON("js/data.json",{},function(data){
        console.log(data);
        console.log(data.uname);
    })

5.jsonp

远程跨域时,如果有两个域名,从其中一个域名去访问另一个域名时,使用
        普通的 ajax 方法是获取不到数据的,那么就可以使用 jsonp 方式发送请求。
        添加属性:
        // jsonp:’callback’
        dataType:’jsonp’
        
        注:访问的远程路径支持跨域

$.ajax({
        type:"get",
        url:"http://iservice.itshsxt.com/restaurant/find",
        data:{
            cuisine:"Bar"
        },
        
dataType:"jsonp", // 跨域处理
        success:function(data){
            console.log(data);
        }
    });

三   表单查询

// 进入页面显示用户信息
loadData();

/**
 * 查询用户列表
 */
function loadData() {

    // 发送ajax请求
    $.ajax({
        type:"get",
        url:"js/data.json",
        data:{
            
        },
        dataType:"json", // 预期服务器返回的数据库
        success:function(result){ // 回调函数
            console.log(result);
            // 判断数据是否查询成功  resultCode  1=成功,0=失败
            if (result.resultCode == 1) { // 成功,显示数据列表
                

                // 创建表格的dom
                crateTable(result.result);
                
            } else { // 失败,显示提示信息
                // 设置提示信息
                var msg = "<h2>暂未查询到用户数据!</h2>";
                // 将提示信息设置到div中
                $("#userInfo").html(msg);
            }
            
        }
    });
}

 


/**
 * 创建表格,并设置到div中
 * @param {Object} userList
 */
function crateTable(userList) {

    // 创建表格对象
    var table = $("<table class='table table-bordered table-hover table-striped'></table>");
    // 创建表头
    var thaed = $("<thead><tr> <th>用户编号</th><th>用户姓名</th><th>用户密码</th><th>用户年龄</th><th>用户性别</th><th>用户头像</th><th>用户操作</th></tr></thead>");
    // 将表头追加到表格中
    table.append(thaed);
    

    // 创建表体对象
    var tbody = $("<tbody></tbody>");
    

    // 循环用户列表,创建对应的tr对象,并设置到table的表体中
    for (var i = 0; i < userList.length; i++) {
        // 得到每个用户对象
        var user = userList[i];
        // 性别
        var sex = "女";
        if (user.userSex) {
            sex = "男";
        }
        // 头像
        var head = "<img src='"+user.userHead+"' width='60px' height='60px' />";
        

        // 创建tr对象
        var tr = "<tr id='tr_"+user.userId+"'><td>"+user.userId+"</td><td>"+user.userName+"</td>";
        tr += "<td>"+user.userPwd+"</td><td>"+user.userAge+"</td>";
        tr += "<td>"+sex+"</td><td>"+head+"</td>";
        tr += "<td><button class='btn btn-warning btn-xs' οnclick='openUpdateDialog("+user.userId+")' ><span class='glyphicon glyphicon-pencil'></sapn> 修改</button>&nbsp;&nbsp;";
        tr += "<button class='btn btn-danger btn-xs'><span class='glyphicon glyphicon-trash'></sapn> 删除</button></td></tr>";

        // 将tr对象追加到tbody中
        tbody.append(tr);
    }
    

    // 将tbody对象追加到table对象中
    table.append(tbody);
    

    // 将表格追加到div中
    $("#userInfo").append(table);
    
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值