• 0509 关于Ajax + 三级联动示例


    关于Ajax

    1.干什么的?

    ajax负责抓取用户名信息,传递给服务器进行校验;

    2.属性:
      onreadystatechange:事件,该事件可以感知ajax状态(readyState)的变化。ajax请求过程中要随时感知其状态  

      readyState:表示ajax状态值

         ajax有5种状态readyState:
              0------> 创建ajax对象完毕
              1------> 有调用open()方法
              2------> 有调用send()方法
              3------> 服务器端数据只返回了一部分
              4------> 服务器端数据全部返回,ajax请求完成

      responseText:以字符串形式接收服务器端返回的信息

    3.方法:
           open():创建一个新的http请求

           send():发送请求到服务器

      例如:

        get:$xhr.open("get","123.php?a=1&b=2");$xhr.send(null);  //如果方式为get,则send为null

        post:$xhr.open("post","123.php);post方法的对应的send:

        //(要在open()方法执行之后设置)

        xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');

        var info = "name=abc&age=20";

        xhr.send(info);

     4.同步异步:

    async:true/false,

    true(默认):异步。同时可进行多个操作。

    false:同步。同一时间只能进行一个操作。

    5.页面跳转

    ajax不能从php页面直接进行跳转,只是返回一个数据。要想跳转页面要从js跳转。

     1 <!doctype html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5 <title>三级联动</title>
     6 </head>
     7 
     8 <body>
     9 省:<select name="" id="sheng" onChange="selshi(this)">
    10         <option value="">请选择</option>
    11 </select>
    12 市:<select name="" id="shi" onChange="selqu(this)">
    13         <option value="">请选择</option>
    14 </select>
    15 区:<select name="" id="qu">
    16         <option value="">请选择</option>
    17 </select>
    18 </body>
    19 </html>
    20 <script>
    21     var attr = [];
    22     //页面加载完成显示省的内容
    23     window.onload = function(){
    24         //发起请求
    25         sendInfo("sheng");
    26     }
    27     function sendInfo(type,code=0){
    28         //创建对象
    29         var xhr = new XMLHttpRequest();
    30         //监听ajax状态
    31         //responseText(返回值)
    32         xhr.onreadystatechange = function(){
    33             if(xhr.readyState == 4){
    34                 //处理数据
    35                 chuliData(xhr.responseText,type);
    36                 
    37             }
    38         }
    39         //创建请求
    40         xhr.open("get","conn_db.php?type="+type+"&code="+code);
    41         //发送请求
    42         xhr.send(null);
    43     }
    44     function chuliData(data,type){
    45         //将字符串转为二维字符数组arr:1,山东;3,河北;
    46         var arr = data.split(";");
    47         var str = '';
    48         for(var i = 0; i < arr.length; i++){
    49             //拆分二维数组为:1,山东
    50             attr[i] = arr[i].split(",");
    51             //option的value = 1,内容 = 山东
    52             str += '<option value="'+attr[i][0]+'">'+attr[i][1]+'</option>';
    53         }
    54         console.log(str);
    55         document.getElementById(type).innerHTML = str;
    56     }
    57     function selshi(obj){
    58         sendInfo('shi',obj.value);
    59     }
    60     function selqu(obj){
    61         sendInfo('qu',obj.value);
    62     }
    63 </script>
    三级联动示例:html+js部分
     1 <?php
     2     //链接数据库
     3     $db = new mysqli('localhost','root','123456','sjld');
     4     //判断链接是否成功
     5     !mysqli_connect_error() or die("连接失败");
     6     //设置字符编码
     7     $db->query("set names utf8");
     8     
     9     $sql = "";
    10     $str = "";
    13     //获取code(上级id)
    14     $get_code = $_GET['code'];
    15     //根据$get_code查询出相关数据
    16     $sql = "select id,area_name from dt_area where pid = $get_code";
    17     $res = $db->query($sql);
    18     $arr = $res->fetch_all();
    19     //处理二维数组$arr,先转为字符串
    20     foreach($arr as $v){
    21         foreach($v as $vv){
    22             $str .= $vv.",";
    23         }
    24         //去掉最后一个逗号
    25         $str = substr($str,0,-1);
    26         //一组结束,用;分隔
    27         $str .= ";";
    28     }
    29     //去掉最后一个分号
    30     $str = substr($str,0,-1);
    31 echo $str;
    三级联动示例:php部分
  • 相关阅读:
    FTP与HTTP上传文件的对比
    【FTP】Wireshark学习FTP流程
    【CSS】div
    浏览器URL中“#” “?” &“”作用
    【EF】vs2017中没有EF模型
    C# List的使用
    C# Dictionary使用
    Git/GitHub的一些问题
    PHP中的break与continue
    css使文字垂直水平居中
  • 原文地址:https://www.cnblogs.com/flypea93/p/9013735.html
Copyright © 2020-2023  润新知