首页 > 代码库 > PHP学习4 — PHP与AJAX
PHP学习4 — PHP与AJAX
1. 创建XMLHttpRequest 对象
1 var XMLHttp=null 2 if (window.XMLHttpRequest) { 3 XMLHttp=new XMLHttpRequest() //适用除Internet Expoler以外的浏览器 4 } 5 else if (window.ActiveXObject){ 6 XMLHttp=new ActiveXObject("Microsoft.XMLHTTP") ////适用Internet Expoler 7 }
2. PHP使用AJAX实例
(1) 写HTML表单。它包含一个简单的 HTML 表单和指向 JavaScript 的链接
1 <html> 2 <head> 3 <script src="http://www.mamicode.com/clienthint.js"></script> 4 </head> 5 6 <body> 7 8 <form> 9 First Name: 10 <input type="text" id="txt1" 11 onkeyup="showHint(this.value)"> //当用户在输入域中按下并松开按键时,会触发一个事件 12 //当该事件被触发时,执行名为 showHint() 的函数 13 </form> 14 15 <p>Suggestions: <span id="txtHint"></span></p> 16 //表单的下面是一个名为 "txtHint" 的 <span>。它用作 showHint() 函数所返回数据的占位符。 17 </body> 18 </html>
(2) JavaScript 代码存储在 "clienthint.js" 文件中,它被链接到 HTML 文档
1 var xmlHttp 2 function showHint(str) //每当在输入域中输入一个字符,该函数就会被执行一次。 3 { 4 if (str.length==0) 5 { 6 document.getElementById("txtHint").innerHTML="" 7 return 8 } 9 xmlHttp=GetXmlHttpObject() 10 if (xmlHttp==null) 11 { 12 alert ("Browser does not support HTTP Request") 13 return 14 } 15 var url="gethint.php" //定义要发送到服务器的 URL(文件名) 16 url=url+"?q="+str //把带有输入域内容的参数 (q) 添加到这个 URL 17 url=url+"&sid="+Math.random() //添加一个随机数,以防服务器使用缓存文件 18 xmlHttp.onreadystatechange=stateChanged //调用 GetXmlHttpObject 函数来创建 XMLHTTP 对象,并在事件被触发时告知该对象执行名为 stateChanged 的函数 19 xmlHttp.open("GET",url,true) //用给定的 URL 来打开打开这个 XMLHTTP 对象 20 xmlHttp.send(null) //向服务器发送 HTTP 请求 21 } 22 23 function stateChanged() //每当 XMLHTTP 对象的状态发生改变,则执行该函数。 24 { 25 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") 26 //在状态变成 4 (或 "complete")时,用响应文本填充 txtHint 占位符 txtHint 的内容。 27 { 28 document.getElementById("txtHint").innerHTML=xmlHttp.responseText 29 } 30 } 31 32 function GetXmlHttpObject() //解决为不同浏览器创建不同 XMLHTTP 对象的问题。 33 { 34 var xmlHttp=null; 35 try 36 { 37 // Firefox, Opera 8.0+, Safari 38 xmlHttp=new XMLHttpRequest(); 39 } 40 catch (e) 41 { 42 // Internet Explorer 43 try 44 { 45 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 46 } 47 catch (e) 48 { 49 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 50 } 51 } 52 return xmlHttp; 53 }
(3) 被 JavaScript 代码调用的服务器页面是一个名为 "gethint.php" 的简单服务器页面。
"gethint.php" 中的代码会检查名字数组,然后向客户端返回对应的名字:
1 <?php 2 // Fill up array with names 3 $a[]="Anna"; 4 $a[]="Brittany"; 5 $a[]="Cinderella"; 6 $a[]="Diana"; 7 $a[]="Eva"; 8 $a[]="Fiona"; 9 $a[]="Gunda"; 10 $a[]="Hege"; 11 $a[]="Inga"; 12 $a[]="Johanna"; 13 $a[]="Kitty"; 14 $a[]="Linda"; 15 $a[]="Nina"; 16 $a[]="Ophelia"; 17 $a[]="Petunia"; 18 $a[]="Amanda"; 19 $a[]="Raquel"; 20 $a[]="Cindy"; 21 $a[]="Doris"; 22 $a[]="Eve"; 23 $a[]="Evita"; 24 $a[]="Sunniva"; 25 $a[]="Tove"; 26 $a[]="Unni"; 27 $a[]="Violet"; 28 $a[]="Liza"; 29 $a[]="Elizabeth"; 30 $a[]="Ellen"; 31 $a[]="Wenche"; 32 $a[]="Vicky"; 33 34 //get the q parameter from URL 35 $q=$_GET["q"]; 36 37 //lookup all hints from array if length of q>0 38 if (strlen($q) > 0) 39 { 40 $hint=""; 41 for($i=0; $i<count($a); $i++) 42 { 43 if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) 44 { 45 if ($hint=="") 46 { 47 $hint=$a[$i]; 48 } 49 else 50 { 51 $hint=$hint." , ".$a[$i]; 52 } 53 } 54 } 55 } 56 57 //Set output to "no suggestion" if no hint were found 58 //or to the correct values 59 if ($hint == "") 60 { 61 $response="no suggestion"; 62 } 63 else 64 { 65 $response=$hint; 66 } 67 68 //output the response 69 echo $response; 70 ?>
(*整理自W3School)
PHP学习4 — PHP与AJAX
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。