Home >Backend Development >PHP Tutorial >Ajax asynchronously requests PHP data, ajax asynchronous php_PHP tutorial
Source: http://www.ido321.com/1138.html
Received an assignment from the teacher, and the implemented layout is as shown below:
If the department ID is entered, only the department name corresponding to the ID will be displayed. If not, all will be displayed. Then based on the value of the I department name, the text box in the corresponding major department will automatically display the department name. of major subjects. For example: if Cardiovascular Medicine is selected, Internal Medicine will be displayed in the corresponding major department.
The main code is as follows:
Request department based on 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>
Effect:
The ID is not entered as shown in the picture above, and the ID is entered as in the picture below:
Next article: Baijia Search: Add Google, Baidu and other search engines to the website
Just ECHO 'string'; or EXIT(json_encode(array)); directly on the S side,
There is no problem with each request, but there will definitely be a delay in each request. The problem with asynchrony is just that there will be a delay, there will not be a problem of not receiving the return value. If you can't receive the return value, it must be that you made a mistake somewhere.
At the same time, in your case, my suggestion is to request all the data at once, store it on the client side, and then display it as needed.
Hope it helps!