zoukankan      html  css  js  c++  java
  • Ajax的简单实现(Json)

    之前写的是一般的Ajax

     if (request.status === 200) { document.getElementById("createResult").innerHTML = request.responseText; } 

    可以看到值的接收是通过request.responseText来接收的

    而通过这种直接判断纯文本的方式是不太灵活的

    通过Json这种数据格式,会方便很多

    把之前的例子重新用Json写一遍

    PHP页面

     1 <?php
     2 //改变Content-Type属性
     3 header("Content-Type:application/json;charset:utf-8");
     4 $nClass = array(
     5     array("name" => "龙傲天","id" => "1","age" => "12","MartialArt" => "剑宗"),
     6     array("name" => "钟岳","id" => "2","age" => "22","MartialArt" => "剑门山"),
     7     array("name" => "叶凡","id" => "3","age" => "18","MartialArt" => "圣地")
     8 );
     9 
    10 if ($_SERVER["REQUEST_METHOD"] == "GET"){
    11     nSearch();
    12 } elseif ($_SERVER["REQUEST_METHOD"] == "POST") {
    13     # code...
    14     nCreate();
    15 }
    16 
    17 function nSearch(){
    18     if (!isset($_GET["id"])||empty($_GET["id"])){
    19         //改成Json数据格式
    20         echo '{"success":false, "msg":"输入参数错误"}';
    21         return;
    22     }
    23 
    24     global $nClass;
    25     $ID = $_GET["id"];
    26     //改成Json数据格式
    27     $result = '{"success":false,"msg":"没有该学员"}';
    28 
    29     foreach ($nClass as $idValue) {
    30         if ($idValue["id"] == $ID) {
    31             //改成Json数据格式
    32             $result = '{"success":true,"msg":"找到该学员:学号:'.$idValue["id"].',姓名:'.$idValue["name"].',年龄:'.$idValue["age"].',门派:'.$idValue["MartialArt"].'"}';
    33             break;
    34         }
    35     }
    36 
    37     echo $result;
    38 }
    39 
    40 function nCreate(){
    41     if (!isset($_POST["name"]) || empty($_POST["name"])
    42     || !isset($_POST["id"]) || empty($_POST["id"])
    43     || !isset($_POST["age"]) || empty($_POST["age"])
    44     || !isset($_POST["MartialArt"]) || empty($_POST["MartialArt"])){
    45         //改成Json数据格式
    46         echo '{"success":false,"msg":"输入参数错误,学员信息不完全"}';
    47         return;
    48      }
    49         //改成Json数据格式
    50         echo '{"success":true,"msg":"学员:'.$_POST["name"].'信息保存成功!"}';
    51 }
    52 
    53 
    54 ?>

    HTML页面

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     8     <title>Document</title>
     9 </head>
    10 
    11 <body>
    12     <h1>人物查询</h1>
    13     <label>请输入人物学号:</label>
    14     <input type="text" id="keyword">
    15     <button id="search">查询</button>
    16     <p id="searchResult"></p>
    17 
    18     <h1>人物新建</h1>
    19     <label>请输入姓名:</label>
    20     <input type="text" id="oName"><br>
    21     <label>请输入学号:</label>
    22     <input type="text" id="oId"><br>
    23     <label for="">请输入年龄:</label>
    24     <input type="text" id="oAge"><br>
    25     <label>请输入门派:</label>
    26     <input type="text" id="oMartialArt"><br>
    27     <button id="save">保存</button>
    28     <p id="createResult"></p>
    29 
    30     <script type="text/javascript">
    31         var nSearch = document.getElementById("search");
    32         var key = document.getElementById("keyword");
    33         var sResult = document.getElementById("searchResult");
    34         nSearch.onclick = function () {
    35             var request = new XMLHttpRequest();
    36             request.open("GET", "newJsonPHP.php?id=" + key.value);
    37             request.send();
    38             request.onreadystatechange = function () {
    39                 if (request.readyState == 4) {
    40                     if (request.status == 200) {
    41                         var data = JSON.parse(request.responseText);
    42                         if (data.success) {
    43                             sResult.innerHTML = data.msg;
    44                         } else {
    45                             sResult.innerHTML = "输入错误:" + data.msg;
    46                         }
    47                     }
    48                 }
    49             }
    50         }
    51         var nSave = document.getElementById("save");
    52         var oName = document.getElementById("oName");
    53         var oId = document.getElementById("oId");
    54         var oAge = document.getElementById("oAge");
    55         var oMartialArt = document.getElementById("oMartialArt");
    56         var oResult = document.getElementById("createResult");
    57 
    58         nSave.onclick = function () {
    59             var request = new XMLHttpRequest();
    60             request.open("POST", "newJsonPHP.php")
    61             var data = "name=" + oName.value + "&id=" + oId.value + "&age=" + oAge.nodeValue + "&MartialArt=" +
    62                 oMartialArt
    63                 .value;
    64             request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    65             request.send(data);
    66 
    67             request.onreadystatechange = function () {
    68                 if (request.readyState === 4) {
    69                     if (request.status === 200) {
    70                         var data = JSON.parse(request.responseText);
    71                         if (data.success) {
    72                             oResult.innerHTML = data.msg;
    73                         } else {
    74                             oResult.innerHTML = "出现错误:" + data.msg;
    75                         }
    76                     } else {
    77                         alert("发生错误:" + request.status);
    78                     }
    79                 }
    80             }
    81         }
    82     </script>
    83 
    84 </body>
    85 
    86 </html>
  • 相关阅读:
    ChartCtrl源码剖析之——CChartTitle类
    ChartCtrl源码剖析之——CChartObject类
    如何在BCGControlBar工程的工具栏里面新增下拉列表控件
    如何在BCGControlBar界面库的CBCGPFormView子视图里面添加工具栏
    记一次调试串口设备Bug的经历
    复数学习笔记
    2021 新高考Ⅰ卷数学试卷及答案
    博客搬家了
    塔伯自我指涉由图片生成K值python程序
    塔伯自我指涉公式作图程序(matplotlib)
  • 原文地址:https://www.cnblogs.com/WhiteM/p/6776984.html
Copyright © 2011-2022 走看看