zoukankan      html  css  js  c++  java
  • js+json实现ajax实例

    前期准备:

    • 安装wampserver或者其他相似软件来搭建本地集成安装环境
    • html、js、css等文件需要放置在wampserver中的www目录中,默认运行index页面
    • bootstrap.css

    界面截图:

    HTML代码(基于bootstrap):

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>index</title>
        <link rel="stylesheet" href="css/bootstrap.min.css"> <!--引入本地bootstrap-->
        <style>
            .container{ width: 50%; margin-top: 30px; }
            .text-danger{ margin-top: 6px; }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <div class="panel-title">员工查询</div>
                </div>
                <div class="panel-body">
                    <div class="form-horizontal">
                        <div class="form-group">
                            <label class="col-md-2 control-label">员工编号:</label>
                            <div class="col-md-8">
                                <input type="text" class="form-control" id="keyword">                            
                            </div>
                            <div class="col-md-1">
                                <button class="btn btn-primary" id="search">查询</button>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-md-2 control-label">查询结果:</label>
                            <p class="text-danger col-md-8" id="searchResult"></p>
                        </div>
                    </div>                
                </div>
            </div>
        </div>
        <div class="container">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <div class="panel-title">员工增加</div>
                </div>
                <div class="panel-body">
                    <div class="form-horizontal">
                        <div class="form-group">
                            <label class="col-md-2 control-label">员工编号:</label>
                            <div class="col-md-8">
                                <input type="text" class="form-control" id="add-number">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-md-2 control-label">员工姓名:</label>
                            <div class="col-md-8">
                                <input type="text" class="form-control" id="add-name">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-md-2 control-label">员工性别:</label>
                            <div class="col-md-8">
                                <input type="text" class="form-control" id="add-sex">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-md-2 control-label">员工职位:</label>
                            <div class="col-md-8">
                                <input type="text" class="form-control" id="add-job">
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="col-md-offset-2 col-md-1">                            
                                <button class="btn btn-primary" id="add-search">增加员工</button>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-md-2 control-label">结果:</label>
                            <p class="text-danger col-md-8" id="add-resultshow"></p>
                        </div>
                    </div>                
                </div>
            </div>
        </div>
        <script src="staffManage.js"></script>
    </body>
    </html>

    javascript代码:

            // 查询员工方法
            var oKeyword=document.getElementById('keyword'),      //员工编号
                oSearchBtn=document.getElementById('search'),     //查询按钮
                oSearchRes=document.getElementById('searchResult');  //反馈结果显示
    
            // 查询员工按钮点击事件    
            oSearchBtn.onclick=function(){
                searchStaff();
            }
            // 创建查询员工方法
            function searchStaff(){
    var xhr=new XMLHttpRequest();
    xhr.open(
    'GET','serverjson.php?number='+oKeyword.value);
    xhr.send();
    xhr.onreadystatechange
    =function(){ if(xhr.readyState==4){ if(xhr.status=200){ var data=JSON.parse(xhr.responseText); //json解析方法JSON.parse 或者 eval('('+xhr.responseText+')') oSearchRes.innerHTML=data.msg; } } } } // 增加员工 var oAddnumber=document.getElementById('add-number'), //员工编号 oAddname=document.getElementById('add-name'), //员工姓名 oAddsex=document.getElementById('add-sex'), //员工性别 oAddjob=document.getElementById('add-job'), //员工职位 oAddSearch=document.getElementById('add-search'), //增加员工按钮 oAddResult=document.getElementById('add-resultshow'); //反馈结果显示 // 增加员工按钮点击事件 oAddSearch.onclick=function(){ createStaff(); } // 创建增加员工方法 function createStaff(){
    var xhr=new XMLHttpRequest();
    xhr.open(
    'POST','serverjson.php');
    var data='name='+oAddname.value +'&number='+oAddnumber.value +'&sex='+oAddsex.value +'&job='+oAddjob.value;
    //在open和send之间设置Content-Type xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send(data);
    xhr.onreadystatechange
    =function(){ if(xhr.readyState==4){ if(xhr.status=200){ var data=JSON.parse(xhr.responseText); if(data.success){ oAddResult.innerHTML=data.msg; }else{ oAddResult.innerHTML='出现错误:'+data.msg; } }else{ alert('发生错误!'+xhr.status) } } } }
    serverjson.php代码:
    <?php
    //设置页面内容是html编码格式是utf-8
    header("Content-Type: text/plain;charset=utf-8"); 
    //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"] . ' 信息保存成功!"}';
    }
    
    ?>

     参考自:慕课网/Ajax全接触 http://www.imooc.com/learn/250

  • 相关阅读:
    ssm(spring+springmvc+mybatis)整合之环境配置
    OD机试题
    openpyxl 读取多个excle中的数据并保存到List中
    Python比较2个字典有哪些值不一致
    Python 正则表达式 匹配小数
    开始入驻博客园,审批神速,赞
    VUE入门实例
    VUE使用axios调用后台API接口
    Redis、Memcached和Tair,同为分布式缓存Redis为何更胜一筹?
    Redis可以用作消息队列吗?
  • 原文地址:https://www.cnblogs.com/lvmylife/p/5350351.html
Copyright © 2011-2022 走看看