>  기사  >  웹 프론트엔드  >  ajax 간단한 예제를 구현하기 위해 js와 json을 결합함

ajax 간단한 예제를 구현하기 위해 js와 json을 결합함

亚连
亚连원래의
2018-05-22 14:39:151093검색

이 글에서는 js와 json을 결합하여 구현한 간단한 ajax 관련 정보를 주로 소개합니다. 관심 있는 친구들은 참고하시기 바랍니다

준비

1. wampserver를 설치하세요. 로컬 통합 설치 환경에서는 phpstudy
2, html, js, css 및 기타 파일을 PHPstudy의 WWW 디렉토리에 설치해야 합니다. 기본적으로 인덱스 페이지
3, bootstrap.css

인터페이스 스크린샷:

phpstudy는 사용하기 매우 편리합니다. 컴퓨터에 php가 설치되어 있지 않은 경우 먼저 시스템 환경 변수를 구성하고 php.exe 경로를 추가한 후(PHPstudy 설치 디렉터리에서 찾기) cmd에 php를 입력해야 합니다. v, 설치 버전과 PHP의 기타 정보가 나타나 설치가 성공했음을 나타냅니다.

그런 다음 PHPstudy의 WWW 폴더에 새 프로젝트를 만듭니다. 여기서 이름은 AjaxDemo입니다.

index.html

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

staffManage.js

인스턴싱 Ajax는 기억하기 쉬운 5가지 지점으로 나눌 수 있습니다.

1 새로운 XMLHttpRequest 인스턴스낮은 버전과 호환됩니다. of IE browsers

var xhr; 
if (window.XMLHttpRequest) { 
xhr= new XMLHttpRequest(); 
} else { 
xhr= new ActiveXObject(‘Microsoft.XMLHTTP&#39;); 
}

2.open(method,url,asyn) XMLHttpRequest 객체의 open() 메소드에는 3개의 매개변수가 있으며, 첫 번째 매개변수는 GET인지 POST인지 지정하고, 두 번째 매개변수는 URL을 지정합니다. 주소, 세 번째 매개변수는 비동기식 사용 여부를 지정합니다. 기본값은 true이므로 작성할 필요가 없습니다.

3* 게시 요청인 경우 요청 헤더 setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

4.send
send() 메소드 호출 실제로 요청을 보내려면 GET 요청에는 매개변수가 필요하지 않으며 POST 요청에는 문자열 또는 FormData 객체로 전달되는 본문 부분이 필요합니다.

5, onReadyStateChange

6, responseText

// 查询员工方法
    var oKeyword=document.getElementById(&#39;keyword&#39;),     //员工编号
      oSearchBtn=document.getElementById(&#39;search&#39;),     //查询按钮
      oSearchRes=document.getElementById(&#39;searchResult&#39;); //反馈结果显示

    // 查询员工按钮点击事件  
    oSearchBtn.onclick=function(){
      searchStaff();
    }
    // 创建查询员工方法
    function searchStaff(){
      //var xhr=new XMLHttpRequest();
      //标准写法和IE写法混在一起,可以兼容低版本的IE浏览器
      var xhr;
      if (window.XMLHttpRequest) {
        xhr= new XMLHttpRequest();
      } else {
        xhr= new ActiveXObject(&#39;Microsoft.XMLHTTP&#39;);
      }

      xhr.open(&#39;GET&#39;,&#39;serverjson.php?number=&#39;+oKeyword.value);

      xhr.send();
      //当创建了XMLHttpRequest对象后,要先设置onreadystatechange的回调函数。在回调函数中,通常我们只需通过readyState === 4判断请求是否完成,如果已完成,再根据status === 200判断是否是一个成功的响应。
      xhr.onreadystatechange=function(){
        if(xhr.readyState==4){
          if(xhr.status=200){
            var data=JSON.parse(xhr.responseText); //json解析方法JSON.parse 或者 eval(&#39;(&#39;+xhr.responseText+&#39;)&#39;)
            oSearchRes.innerHTML=data.msg;
          }
        }
      }
    }

    // 增加员工    
    var oAddnumber=document.getElementById(&#39;add-number&#39;), //员工编号
      oAddname=document.getElementById(&#39;add-name&#39;), //员工姓名
      oAddsex=document.getElementById(&#39;add-sex&#39;), //员工性别
      oAddjob=document.getElementById(&#39;add-job&#39;), //员工职位
      oAddSearch=document.getElementById(&#39;add-search&#39;), //增加员工按钮
      oAddResult=document.getElementById(&#39;add-resultshow&#39;); //反馈结果显示

    // 增加员工按钮点击事件
    oAddSearch.onclick=function(){
      createStaff();
    }
    // 创建增加员工方法
    function createStaff(){

      var xhr;
      if(xhr.XMLHttpRequest){
        xhr = new XMLHttpRequest();
      }else{
        xhr = new ActiveXObject(&#39;Microsoft.XMLHTTP&#39;);
      }

      xhr.open(&#39;POST&#39;,&#39;serverjson.php&#39;);

      //这里注意key=value的等于号两边不要出现空格,会出现错误
      var data=&#39;name=&#39;+oAddname.value
      +&#39;&number=&#39;+oAddnumber.value
      +&#39;&sex=&#39;+oAddsex.value
      +&#39;&job=&#39;+oAddjob.value;

      //在open和send之间设置Content-Type
      xhr.setRequestHeader(&#39;Content-Type&#39;,&#39;application/x-www-form-urlencoded&#39;);

      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=&#39;出现错误:&#39;+data.msg;
            }
          }else{
            alert(&#39;发生错误!&#39;+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 &#39;{"success":false,"msg":"参数错误"}&#39;;
    return;
  }
  //函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
  //global 关键词用于访问函数内的全局变量
  global $staff;
  //获取number参数
  $number = $_GET["number"];
  $result = &#39;{"success":false,"msg":"没有找到员工。"}&#39;;

  //遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果
  foreach ($staff as $value) {
    if ($value["number"] == $number) {
      $result = &#39;{"success":true,"msg":"找到员工:员工编号:&#39; . $value["number"] . 
              &#39;,员工姓名:&#39; . $value["name"] . 
              &#39;,员工性别:&#39; . $value["sex"] . 
              &#39;,员工职位:&#39; . $value["job"] . &#39;"}&#39;;
      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 &#39;{"success":false,"msg":"参数错误,员工信息填写不全"}&#39;;
    return;
  }
  //TODO: 获取POST表单数据并保存到数据库

  //提示保存成功
  echo &#39;{"success":true,"msg":"员工:&#39; . $_POST["name"] . &#39; 信息保存成功!"}&#39;;
}

?>

Summary

전체 프로세스는 대략 다음과 같습니다.

위는 이 내용은 제가 여러분을 위해 정리한 것입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

ajax 3단계 연결 구현 코드

ajax는 데이터 로딩 기능을 구현합니다.

ajax_Examples 사용 방법, ajax 데이터 처리

위 내용은 ajax 간단한 예제를 구현하기 위해 js와 json을 결합함의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.