javaScript

AJAX(Asynchronous Javascript And

2018-01-26  本文已影响0人  流浪乞丐888

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>
上一篇下一篇

猜你喜欢

热点阅读