Maison >php教程 >php手册 >Ajax异步请求PHP数据,ajax异步php

Ajax异步请求PHP数据,ajax异步php

WBOY
WBOYoriginal
2016-06-13 09:22:151472parcourir

Ajax异步请求PHP数据,ajax异步php

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

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

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

主要代码如下:

根据ID请求科室

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

keshi.php:

<span><?php
<span>/*防止恶意调用*/</span>
define(<span>"TEST"</span>,<span>'test'</span>);
<span>// 引入文件</span>
<span>include_once</span> <span>'mysql.func.php'</span>;
<span>// 数据库初始化</span>
connectMySQL();
selectDB();
setZiFuJi();

<span>//获得来自 URL 的 q 参数</span>
$q=$_GET[<span>"q"</span>];
<span>//如果 q 是数字或者数字字符串</span>
<span>if</span> (is_numeric($q))
  {
    $q = intval($q);
    $hint=<span>""</span>;
    $resultDKQ = queryDB(<span>"select name from table_dake where id=$q"</span>);
    $hint = <span>'科室名字:<select name="ksname" id="ksname" onchange="show(this.options[this.selectedIndex].value)">'</span>;
    <span>while</span> (!!$rowDKQ = fetchAssoc($resultDKQ))
    {
      $hint .= <span>'<optgroup label='</span>.$rowDKQ[<span>'name'</span>].<span>'>'</span>;
      $resultKSQ = queryDB(<span>"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"</span>);
      <span>while</span>(!!$rowKSQ = fetchAssoc($resultKSQ))
      {
        $hint .= <span>'<option>'name'</span>].<span>'>'</span>.$rowKSQ[<span>'name'</span>].<span>'</option>'</span>;
      }
      $hint .= <span>'</optgroup>'</span>;
    }
  }
  <span>// 不是数字</span>
  <span>else</span>
  {
    $resultDK = queryDB(<span>"select table_dake.name from table_dake"</span>);
    $hint = <span>'科室名字:<select name="ksname" id="ksname" onchange="show(this.options[this.selectedIndex].value)">'</span>;
     <span>while</span> (!!$rowDK = fetchAssoc($resultDK))
    {
      $hint .= <span>'<optgroup label='</span>.$rowDK[<span>'name'</span>].<span>'>'</span>;
      $resultKS = queryDB(<span>"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"</span>);
      <span>while</span>(!!$rowKS = fetchAssoc($resultKS))
      {
        $hint .= <span>'<option>'name'</span>].<span>'>'</span>.$rowKS[<span>'name'</span>].<span>'</option>'</span>;
      }
      $hint .= <span>'</optgroup>'</span>;
    }
  }
 $response=$hint;
<span>//输出响应</span>
<span>echo</span> $response;
?></span>

 

效果:

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

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

用ajax提交异步后,PHP该怎写代码用来返回处理的结果到客户端

在S端直接ECHO '字符串';或 EXIT(json_encode(数组));就行了,
 

ajax的异步

每次请求是没问题的,但是每次请求肯定会有延时。异步的问题只是会有延时,不会存在接收不到返回值的问题,收不到返回值肯定是你哪里写错了。

同时你这个情况我的比较建议一次就把数据都请求过来,存在客户端这边,然后根据需要显示就可以了。

希望对你有帮助!
 

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn