PHP编程中有哪些常见的Ajax操作
更新时间:2023-10-30PHP Ajax 操作
1. Ajax 改变内容
这个操作用于从服务器加载新内容,并替换文档中的某个元素。这个操作也可以称为局部刷新。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax 改变内容</title> </head> <body> <button onclick="showHint()">获取新内容</button> <p id="txtHint">原内容</p> <script> function showHint() { var xmlhttp, url="gethint.php", txt=""; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (this.readyState==4 && this.status==200) { document.getElementById("txtHint").innerHTML=this.responseText; } }; xmlhttp.open("GET",url,true); xmlhttp.send(); } </script> </body> </html>
2. Ajax 异步上传文件
这个操作用于异步上传文件,并在上传过程中提供进度条。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax 异步上传文件</title> </head> <body> <input type="file" id="myfile"> <br><br> <button onclick="uploadFile()">上传</button> <br><br> <progress id="myprogress" value="0" max="100"></progress> <script> function uploadFile() { var file=document.getElementById("myfile").files[0]; var url="upload.php"; var form=new FormData(); form.append("myfile",file); var xhr=new XMLHttpRequest(); xhr.upload.addEventListener("progress",function(event){ if (event.lengthComputable) { var percentComplete=event.loaded / event.total * 100; document.getElementById("myprogress").value=percentComplete.toFixed(0); } }, false); xhr.onreadystatechange=function(){ if (xhr.readyState==4 && xhr.status==200){ alert(xhr.responseText); } }; xhr.open("POST", url, true); xhr.send(form); } </script> </body> </html>
3. Ajax 自动完成功能
这个操作在用户输入时,动态展示一些匹配结果。可以看做是搜索框。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax 自动完成功能</title> </head> <body> <form> <input type="text" id="txt1" onkeyup="showHint(this.value)"> </form> <p>匹配结果:</p> <ul id="txtHint"></ul> <script> function showHint(str) { var xmlhttp, url="gethint.php?q=" + str; if (str.length==0) { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (this.readyState==4 && this.status==200) { document.getElementById("txtHint").innerHTML=this.responseText; } }; xmlhttp.open("GET",url,true); xmlhttp.send(); } </script> </body> </html>
4. Ajax 多级联动菜单
这个操作用于动态加载下一级菜单,是非常流行的用户交互方式。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax 多级联动菜单</title> </head> <body> <form> <select name="province" onchange="showCity(this.value)"> <option>请选择省份</option> <option value="GD">广东省</option> <option value="HB">河北省</option> </select> <select name="city" onchange="showDistrict(this.value)"> <option>请选择城市</option> </select> <select name="district"> <option>请选择地区</option> </select> </form> <script> function showCity(str) { var xmlhttp, url="getcity.php?province=" + str; if (str.length==0) { document.getElementsByName("city")[0].innerHTML="<option>请选择城市</option>"; document.getElementsByName("district")[0].innerHTML="<option>请选择地区</option>"; return; } if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (this.readyState==4 && this.status==200) { document.getElementsByName("city")[0].innerHTML=this.responseText; document.getElementsByName("district")[0].innerHTML="<option>请选择地区</option>"; } }; xmlhttp.open("GET",url,true); xmlhttp.send(); } function showDistrict(str) { var xmlhttp, url="getdistrict.php?city=" + str; if (str.length==0) { document.getElementsByName("district")[0].innerHTML="<option>请选择地区</option>"; return; } if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (this.readyState==4 && this.status==200) { document.getElementsByName("district")[0].innerHTML=this.responseText; } }; xmlhttp.open("GET",url,true); xmlhttp.send(); } </script> </body> </html>
以上是 PHP Ajax 常见操作示例。