• Ajax异步请求PHP数据


    来源:http://www.ido321.com/1138.html

    接到了老师的一个作业,实现的布局如图:

    如果输入了科室ID,科室名字只显示与ID对应的,若没有输入,则显示全部,然后根据I科室名字的值,在所属大科中的文本框自动显示科室名字所在的大科。例如:选择了心血管内科,则在所属大科显示内科。

    主要代码如下:

    根据ID请求科室

    function showHint(str)
    {
        var xmlhttp;
        if (window.XMLHttpRequest)
         {// IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
         }
          else
         {// IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.onreadystatechange=function()
        {
           if (xmlhttp.readyState==4 && xmlhttp.status==200)
          {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
          }
      }
        xmlhttp.open("GET","keshi.php?q="+str,true);
        xmlhttp.send();
    }

    keshi.php:

    <?php
    /*防止恶意调用*/
    define("TEST",'test');
    // 引入文件
    include_once 'mysql.func.php';
    // 数据库初始化
    connectMySQL();
    selectDB();
    setZiFuJi();
    
    //获得来自 URL 的 q 参数
    $q=$_GET["q"];
    //如果 q 是数字或者数字字符串
    if (is_numeric($q))
      {
        $q = intval($q);
        $hint="";
        $resultDKQ = queryDB("select name from table_dake where id=$q");
        $hint = '科室名字:<select name="ksname" id="ksname" onchange="show(this.options[this.selectedIndex].value)">';
        while (!!$rowDKQ = fetchAssoc($resultDKQ))
        {
          $hint .= '<optgroup label='.$rowDKQ['name'].'>';
          $resultKSQ = queryDB("select table_dake.id,table_keshi.sid,table_keshi.name from table_dake,table_keshi where table_dake.name='{$rowDKQ['name']}' and table_keshi.sid=table_dake.id");
          while(!!$rowKSQ = fetchAssoc($resultKSQ))
          {
            $hint .= '<option style="padding-left:15px;" value ='. $rowKSQ['name'].'>'.$rowKSQ['name'].'</option>';
          }
          $hint .= '</optgroup>';
        }
      }
      // 不是数字
      else
      {
        $resultDK = queryDB("select table_dake.name from table_dake");
        $hint = '科室名字:<select name="ksname" id="ksname" onchange="show(this.options[this.selectedIndex].value)">';
         while (!!$rowDK = fetchAssoc($resultDK))
        {
          $hint .= '<optgroup label='.$rowDK['name'].'>';
          $resultKS = queryDB("select table_dake.id,table_keshi.sid,table_keshi.name from table_dake,table_keshi where table_dake.name='{$rowDK['name']}' and table_keshi.sid=table_dake.id");
          while(!!$rowKS = fetchAssoc($resultKS))
          {
            $hint .= '<option style="padding-left:15px;" value ='. $rowKS['name'].'>'.$rowKS['name'].'</option>';
          }
          $hint .= '</optgroup>';
        }
      }
     $response=$hint;
    //输出响应
    echo $response;
    ?>

     

    效果:

    未输入ID如上图,输入ID在下图:

    下一篇:百家搜索:在网站中添加Google、百度等搜索引擎

  • 相关阅读:
    Live Writer配置
    protobufnet 学习手记
    好的Sql语句也能提高效率(二)
    关于CodeSmith的输出问题
    [Scrum]12.29
    [scrum] 1.4
    分享 关于c#注释的规范
    [Scrum] 1.3
    分享:将XML(VS提取注释时生成)转换为Chm的一个方法
    【Scrum】2010.12.27
  • 原文地址:https://www.cnblogs.com/ido321/p/4074045.html
Copyright © 2020-2023  润新知