Ajax 實例

 
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>deomo</title>
    <style>
    *{
        font-size: 30px;
        line-height: 1.8;
    }
    </style>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</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>


    <script type="text/javascript">
    $(document).ready(function(){
        $("#search").click(function(){
            $.ajax({
                type:"GET",        //請求分類
                url:"test.php?number="+$("#keyword").val(),  //目的地址
                dataType:"json",          //數據分類
                success:function(data){        //數據參數
                    if(data.success){
                        $("#searchResult").html(data.msg);
                    }else{
                        $("#searchResult").html("error"+data.msg);
                    }
                },
                error:function(jqXHR){        //jqXHR顯示出錯狀態
                    alert("error"+jqXHR.status);
                }
            });
        });

        //使用jQuery封裝好的ajax  post方式比get多一個data,避免了字符串拼接的麻煩
        $("#save").click(function(){
            $.ajax({
                type:"POST",
                url:"test.php",
                dataType:"json",
                data:{
                    name:$("#staffName").val(),
                    number:$("#staffNumber").val(),
                    sex:$("#staffSex").val(),
                    job:$("#staffJob").val()
                },
                success:function(data){
                    if(data.success){
                        $("#createResult").html(data.msg);
                    }else{
                        $("#createResult").html("出錯了"+data.msg);
                    }
                },
                error:function(jqXHR){
                    alert("出錯了"+jqXHR.status);
                }
            });
        });
    });

    /*
        // 建立xhr對象 發送異步請求 監聽服務器的返回結果 並呈如今頁面上
    document.getElementById("search").onclick = function(){
        var request = new XMLHttpRequest();
        request.open("GET","test.php?number="+document.getElementById("keyword").value,true);
        request.send();

        request.onreadystatechange = function(){
            if(request.readyState==4){
                if(request.status == 200){
                    var data = JSON.parse(request.responseText);
                    if(data.success){
                        document.getElementById("searchResult").innerHTML = data.msg;
                    }else{
                        alert("出錯了"+data.msg);
                    }
                }else{
                    alert("出錯了"+request.status);
                }
            }
        }
    }
    //新建員工
    document.getElementById("save").onclick = function(){
        var request = new XMLHttpRequest();
        request.open("POST","test.php",true);
        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) { 
                var data = JSON.parse(request.responseText);
                if (data.success) { 
                    document.getElementById("createResult").innerHTML = data.msg;
                } else {
                    document.getElementById("createResult").innerHTML = "出現錯誤:" + data.msg;
                }
            } else {
                alert("發生錯誤:" + request.status);
            }
        } 
    }
    }
    */

    </script>
</body>
</html>

 

<?php
//設置頁面內容是html編碼格式是utf-8
//header("Content-Type: text/plain;charset=utf-8"); 
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST,GET');
header('Access-Control-Allow-Credentials:true'); 
header("Content-Type: application/json;charset=utf-8"); 
//header("Content-Type: text/xml;charset=utf-8"); 
//header("Content-Type: text/html;charset=utf-8"); 
//header("Content-Type: application/javascript;charset=utf-8"); 

//定義一個多維數組,包含員工的信息,每條員工信息爲一個數組
$staff = array
	(
		array("name" => "洪七", "number" => "101", "sex" => "男", "job" => "總經理"),
		array("name" => "郭靖", "number" => "102", "sex" => "男", "job" => "開發工程師"),
		array("name" => "黃蓉", "number" => "103", "sex" => "女", "job" => "產品經理")

	);

//判斷若是是get請求,則進行搜索;若是是POST請求,則進行新建
//$_SERVER是一個超全局變量,在一個腳本的所有做用域中均可用,不用使用global關鍵字
//$_SERVER["REQUEST_METHOD"]返回訪問頁面使用的請求方法
if ($_SERVER["REQUEST_METHOD"] == "GET") {
	search();
} elseif ($_SERVER["REQUEST_METHOD"] == "POST"){
	create();
}

//經過員工編號搜索員工
function search(){
	//檢查是否有員工編號的參數
	//isset檢測變量是否設置;empty判斷值爲否爲空
	//超全局變量 $_GET 和 $_POST 用於收集表單數據
	if (!isset($_GET["number"]) || empty($_GET["number"])) {
		echo '{"success":false,"msg":"參數錯誤"}';
		return;
	}
	//函數以外聲明的變量擁有 Global 做用域,只能在函數之外進行訪問。
	//global 關鍵詞用於訪問函數內的全局變量
	global $staff;
	//獲取number參數
	$number = $_GET["number"];
	$result = '{"success":false,"msg":"沒有找到員工。"}';
	
	//遍歷$staff多維數組,查找key值爲number的員工是否存在,若是存在,則修改返回結果
	foreach ($staff as $value) {
		if ($value["number"] == $number) {
			$result = '{"success":true,"msg":"找到員工:員工編號:' . $value["number"] . 
							',員工姓名:' . $value["name"] . 
							',員工性別:' . $value["sex"] . 
							',員工職位:' . $value["job"] . '"}';
			break;
		}
	}
    echo $result;
}

//建立員工
function create(){
	//判斷信息是否填寫徹底
	if (!isset($_POST["name"]) || empty($_POST["name"])
		|| !isset($_POST["number"]) || empty($_POST["number"])
		|| !isset($_POST["sex"]) || empty($_POST["sex"])
		|| !isset($_POST["job"]) || empty($_POST["job"])) {
		echo '{"success":false,"msg":"參數錯誤,員工信息填寫不全"}';
		return;
	}
	//TODO: 獲取POST表單數據並保存到數據庫
	
	//提示保存成功
	echo '{"success":true,"msg":"員工:' . $_POST["name"] . ' 信息保存成功!"}';
}

?>
相關文章
相關標籤/搜索