chengzi-he

一.基础
   1.ajax是什么?
    ajax = Asynchronous JavaScript and XML (异步的JavaScript和XML)
    ajax不是编程语言,ajax是一种用于创建快速动态网页的技术。
2.ajax有什么特点?
    传统的网页如果需要更新,必须重载整个页面,ajax可以实现局部刷新的效果,即向服务器
    请求部分页面所需数据更新网页内容,这样可以减轻服务器的负担。
二.实践
    下面例子实现的是员工信息的查询和创建,其中服务端用的是PHP语言实现的,此处没有使用数
    据库服务,员工信息存在数组中;ajax用了两种方式实现,一种是jQuery,一种是原生方式。

jQuery方式实现

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php&ajax</title>
    <style type="text/css">
        body,input,button,select,h1{
            font-size: 30px;
            line-height: 1.2;
        }
        div{
            width: 690px;
            margin: auto;
            margin-top: 100px;
        }
    </style>
</head>
<body>
    <div>
        <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="number"/><br>
        <label>请输入员工姓名</label>
        <input type="text" id="name"/><br>
        <label>请输入员工性别</label>
        <select id="sex">
            <option>男</option>
            <option>女</option>
        </select><br>
        <label>请输入员工职位</label>
        <input type="text" id="job"/>
        <button id="save">保存</button>
        <p id="createResult"></p>
    </div>
<!-- 引入百度的静态资源库 -->
<script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.js"></script>
<script>
    // jquery封装的Ajax请求 GET
    $(document).ready(function(){
        $("#search").click(function(){
            $.ajax({
                type:"GET",
                url:"ajax.php?number="+$("#keyword").val(),
                dataType:"json",
                success:function(data){
                    if (data.success) {
                        $("#searchResult").html(data.msg);
                    }else{
                        $("#searchResult").html("出现错误:"+data.msg);
                    }
                },
                error:function(jqXHR){
                    alert("发生错误:"+jqXHR.status);
                },
            });
        });
    });
    // jquery封装的Ajax请求 GET
    $(document).ready(function(){
        $("#save").click(function(){
            $.ajax({
                type:"POST",
                url:"ajax.php",
                dataType:"json",
                data:{
                    name:$("#name").val(),
                    number:$("#number").val(),
                    sex:$("#sex").val(),
                    job:$("#job").val(),
                },
                success:function(data){
                    if(data.success){
                        $("#createResult").html(data.msg);
                    }else{
                        $("#createResult").html("出现错误:"+data.msg);
                    }
                },
                error:function(jqXHR){
                    alert("发生错误:"+jqXHR.status);
                }
            });
        });
    });
</script>
</body>
</html>

原生代码实现

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php&ajax</title>
    <style type="text/css">
        body,input,button,select,h1{
            font-size: 30px;
            line-height: 1.2;
        }
        div{
            width: 690px;
            margin: auto;
            margin-top: 100px;
        }
    </style>
</head>
<body>
    <div>
        <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="number"/><br>
        <label>请输入员工姓名</label>
        <input type="text" id="name"/><br>
        <label>请输入员工性别</label>
        <select id="sex">
            <option>男</option>
            <option>女</option>
        </select><br>
        <label>请输入员工职位</label>
        <input type="text" id="job"/>
        <button id="save">保存</button>
        <p id="createResult"></p>
    </div>
<script>
    //原生js写的Ajax请求
    document.getElementById("search").onclick = function(){
        //发送Ajax查询请求并处理
        var request = new XMLHttpRequest();
        request.open("GET","ajax.php?number="+document.getElementById("keyword").value);
        request.send();
        //监听readystate对象是否发生变化
        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{
                        document.getElementById("searchResult").innerHTML = \'出现错误:\'+data.msg;
                    }
                }else{
                    alert("发生错误:"+request.status);
                }
            }
        }
    }

    document.getElementById("save").onclick = function(){
        //发送Ajax查询请求并处理
        var request = new XMLHttpRequest();
        request.open("POST","ajax.php");
        var data = "name="+document.getElementById("name").value
                    +"&number="+document.getElementById("number").value
                    +"&sex="+document.getElementById("sex").value
                    +"&job="+document.getElementById("job").value
        request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        request.send(data);
        console.log(data);
        //监听readystate对象是否发生变化
        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代码(ajax.php)

<?php
//设置页面内容是HTML 编码格式是utf-8
header("Content-Type:application/json;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请求,则调用新建函数
if ($_SERVER[\'REQUEST_METHOD\'] == \'GET\') {
    search();
} elseif ($_SERVER[\'REQUEST_METHOD\'] == \'POST\') {
    create();
}
/**
 * 通过员工编号搜索员工
 **/
function search()
{
    if (!isset($_GET[\'number\']) || empty($_GET[\'number\'])) {
        show(-1, \'参数错误\');
        return;
    }
    global $staff;
    $number = $_GET[\'number\'];
    $result = \'没有找到员工\';
    foreach ($staff as $value) {
        if (in_array($number, $value)) {
            $result = \'姓名:\' . $value[\'name\'] . \',性别:\' . $value[\'sex\'] . \',编号:\' . $value[\'number\'] . \',职位:\' . $value[\'job\'];
            break;
        }
    }
    show(1, $result);
    return;
}
/**
 * 新建员工信息
 **/
function create()
{
    $name   = !empty($_POST[\'name\']) ? $_POST[\'name\'] : \'\';
    $sex    = !empty($_POST[\'sex\']) ? $_POST[\'sex\'] : \'\';
    $number = !empty($_POST[\'number\']) ? $_POST[\'number\'] : \'\';
    $job    = !empty($_POST[\'job\']) ? $_POST[\'job\'] : \'\';
    if (empty($name) || empty($sex) || empty($number) || empty($job)) {
        show(-1, \'信息不全\');
    } else {
        $res = $name . \' 的信息保存成功!\';
        show(1, $res);
    }
    return;
}
/**
 * json形式输出展示信息
 * @param $code
 * @param $msg
 **/
function show($code = \'\', $msg = \'\')
{
    if ($code === 1) {
        echo \'{"success":true,"msg":"\' . $msg . \'"}\';
    } else {
        echo \'{"success":false,"msg":"\' . $msg . \'"}\';
    }
    return;
}

三.总结
    Ajax虽然不是编程语言,但是Ajax技术的实现还是需要用js脚本编写的,
    所以编写脚本的时候,还是要注意JavaScript的语法规则,避免出现一些低级错误

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-12-04
  • 2021-12-04
  • 2021-12-04
  • 2022-12-23
  • 2021-11-14
  • 2021-12-04
  • 2021-05-24
猜你喜欢
  • 2021-12-04
  • 2021-12-04
  • 2021-12-04
  • 2021-12-04
  • 2021-05-17
  • 2022-12-23
  • 2021-12-04
相关资源
相似解决方案