美文网首页javaScript
AJAX(Asynchronous Javascript And

AJAX(Asynchronous Javascript And

作者: 流浪乞丐888 | 来源:发表于2018-01-26 21:04 被阅读0次

    AJAX不是一门新的语言,而是对现有技术的综合利用,本质是在HTTP协议的基础上以异步的方式与服务器进行通信。(实现局部刷新功能)。
    🇨🇳XMLHttpRequest:(浏览器内建对象,用于在后台与服务器通信,由此可以实现网页的局部刷新,而不是整体刷新)

      用法:
    //创建XMLHttpRequest实例
    var request = new XMLHttpRequest();
    ========================================================
    //设置请求行(请求方式和请求服务器地址,默认为true表示异步)
    request.open("POST", "server.php?, true);
    //GET方式的话参数跟在请求地址后边
    request.open("GET", "server.php?number=" + document.getElementById("keyword").value, true);
    ========================================================
    
    //设置请求头,get方法一般不需要设置
    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    ========================================================
    //设置请求主体(POST需要填写,GET方法一般不写或写为request.send(null);)
    request.send("username=admin&pass=123");
    ========================================================
    //接收服务器响应(有0,1,2,3,4共五个状态,request.readyState分别等于以下状态码时,
    //0的时候请求未初始化,open未调用
    //1的时候open已调用,与服务器建立连接
    //2的时候请求已接收,HEADERS_RECEIVED接收到头消息
    //3的时候请求处理中LOADING接收到响应主体
    //4的时候请求已完成,DONE响应完成)
    
    //监听状态码的方法
    request.onreadystatechange = function() {
    //获取响应信息
        request.statusText;
    //获取响应码,如200
        request.status;
    //获取全部响应头信息
        request.getAllResponseHeaders();
    //获取指定头信息
         request.getResponseHeader("key");
    //表示响应主体
        request.responseText, request.responseXML
    
        if(request.readyState==4) {
            if(request.status==200) {
                //console.log("响应完成并且成功响应");
                var result=request.responseText;
                document.getElementById("id").innerHTML=result;
             }  else {
                console.log("请求失败");
             }
         }
                  
    

    🇨🇳例:
    原生AJAX

    <script>
    document.getElementById("search").onclick = function() { 
        var request = new XMLHttpRequest();
        request.open("GET", "server.php?number=" + document.getElementById("keyword").value);
        request.send();
        request.onreadystatechange = function() {
    //if(request.readyState==4 && request.status==200)
            if (request.readyState==4) {
                if (request.status==200) { 
                    document.getElementById("searchResult").innerHTML = request.responseText;
                } else {
                    alert("发生错误:" + request.status);
                }
            } 
        }
    }
    
    document.getElementById("save").onclick = function() { 
        var request = new XMLHttpRequest();
        request.open("POST", "server.php");
    //构造参数
        var data = "name=" + document.getElementById("staffName").value 
                          + "&number=" + document.getElementById("staffNumber").value 
                          + "&sex=" + document.getElementById("staffSex").value 
                          + "&job=" + document.getElementById("staffJob").value;
        request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        request.send(data);
        request.onreadystatechange = function() {
            if (request.readyState==4) {
                if (request.status==200) { 
                    document.getElementById("createResult").innerHTML = request.responseText;
                } else {
                    alert("发生错误:" + request.status);
                }
            } 
        }
    }
    </script>
    

    🇨🇳例:
    JQuery中的AJAX(传JSON格式的对象)

    //引入JQuery
    <script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.js"></script>
    <script>
    //JQuery初始化,此方法可以出现多次
    $(document).ready(function(){ 
        $("#search").click(function(){ 
            $.ajax({ 
                type: "GET",    
                url: "http://127.0.0.1:8000/ajaxdemo/serverjsonp.php?number=" + $("#keyword").val(),
    //跨域会用到jsonp,若不跨域,请定义dataType:"json"
                dataType: "jsonp",
    //跨域会用到jsonp,若不跨域,不需要定义jsonp,callback可以为任意,但需要与后端保持一致
                jsonp: "callback",
                success: function(data) {
                    if (data.success) {
                        $("#searchResult").html(data.msg);
                    } else {
                        $("#searchResult").html("出现错误:" + data.msg);
                    }  
                },
                error: function(jqXHR){     
                   alert("发生错误:" + jqXHR.status);  
                },     
            });
        });
        
        $("#save").click(function(){ 
            $.ajax({ 
                type: "POST",   
                url: "http://127.0.0.1:8000/ajaxdemo/serverjsonp.php",
                data: {
                    name: $("#staffName").val(), 
                    number: $("#staffNumber").val(), 
                    sex: $("#staffSex").val(), 
                    job: $("#staffJob").val()
                },
                dataType: "json",
                success: function(data){
                    if (data.success) { 
                        $("#createResult").html(data.msg);
                    } else {
                        $("#createResult").html("出现错误:" + data.msg);
                    }  
                },
                error: function(jqXHR){     
                   alert("发生错误:" + jqXHR.status);  
                },     
            });
        });
    });
    </script>
    

    🇨🇳例子中的html表单模板

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Demo</title>
    <style>
    body, input, select, button, h1 {
        font-size: 28px;
        line-height:1.7;
        text-align:center;
    }
    </style>    
    </head>
    
    <body>
    
    <h1>员工查询</h1>
    
    <label>请输入员工编号:</label>
    <input type="text" id="keyword" />
    <button id="search">查询</button>
    <p id="searchResult"></p>
    
    <h1>员工新建</h1>
    <label>请输入员工姓名:</label>
    <input type="text" id="staffName" /><br>
    <label>请输入员工编号:</label>
    <input type="text" id="staffNumber" /><br>
    <label>请选择员工性别:</label>
    <select id="staffSex">
    <option>女</option>
    <option>男</option>
    </select><br>
    <label>请输入员工职位:</label>
    <input type="text" id="staffJob" /><br>
    <button id="save">保存</button>
    <p id="createResult"></p>
    

    相关文章

      网友评论

        本文标题:AJAX(Asynchronous Javascript And

        本文链接:https://www.haomeiwen.com/subject/dqlwaxtx.html