web2.0的到来,ajax逐渐成为主流,什么是ajax,ajax的开发模式,优点,使用技术。(ajax概述,ajax使用的技术,需要注意的 问题,在PHP应用ajax技术的应用)
什么是ajax,ajax的开发模式,优点。
ajax是由jesse james garrett创建的,是asynchronous javascript and xml,异步javascript和xml技术,ajax并不是一门新的语言或技术,它是javascript,xml,css,dom等多种技术的组合,可以实现客户端的异步请求操作,可以在不刷新页面下与服务器进行通信,从而减少了用户的等待时间。
ajax开发模式:浏览器(客户端) http传输,http请求, web服务器 数据存储,后端处理,继承系统,服务器端。
客户端(浏览器)JavaScript调用,ajax引擎 http请求,http传输, web和xml服务器,数据存储,后端处理,继承系统(服务端)。
优点:减轻服务器的负担,可以把部分由服务器负担的工作转移到客户端上,无刷新更新页面,可以调用xml等外部数据,基于标准化的并被广泛支持的技术。
JavaScript是一种在web页面中添加动态脚本代码的解释性程序语言。
xmlhttprequest
ie浏览器把xmlhttp
var http_request = new ActiveXObject("Msxml2.XMLHTTP");
var http_request = new ActiveXObject("Microsoft.XMLHTTP");
mozailla,safari等其他浏览器
var http_request = new XMLHttpRequest();
if(window.XMLHttpRequest){
http_request = new XMLHttpRequest();
}else if(window.ActiveXObject){
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
XMLHttpRequest对象的常用方法:
open()方法用于设置进行异步请求目标的url
open("method", "url" [,asyncFlag [,"userName" [, "password"]]])
send()方法用于向服务器发送请求
send(content)
setRequestHeader()方法
setRequestHeader()方法为请求的http头设置值
setRequestHeader("label","value")
label用于指定http头,value用于指定http头设置值
open()方法过后才能使用setRequestHeader()方法
abort()方法abort()方法用于停止当前异步请求
getAllResponseHeaders()方法getAllResponseHeaders()方法用于以字符串形式完整的http头信息。
xmlhttpRequest对象常用的属性onreadystatechange 每个状态改变时都会触发这个事件处理器,通常会调用一个JavaScript函数。
readyState 请求的状态:
0 为未初始化
1 为正在下载
2 为已加载
3 在交互中
4 为完成
responseText 服务器的响应,表示字符串
responseXML 服务器的响应,表示xml
status 返回服务器的http状态码statusText 返回http状态码对应的文本
xml语言为可扩展的标记语言,提供了用于描述结构化数据的格式。xmlHttpRequest对象与服务器交换的数据,通常采用xml格式。
dom为文档对象模型,为xml文档的解析定义了一组接口。
在PHP中应用AJAX技术检测用户名
var http_request = false;
function createRequest(url) {
//初始化对象并发出XMLHttpRequest请求
http_request = false;
if (window.XMLHttpRequest) { //Mozilla等其他浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) { //IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert("不能创建XMLHTTP实例!");
return false;
}
http_request.onreadystatechange = alertContents; //指定响应方法
http_request.open("GET", url, true); //发出HTTP请求
http_request.send(null);
}
function alertContents() { //处理服务器返回的信息
if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
} else {
alert('您请求的页面发现错误');
}
}
}
function checkName() {
var username = form1.username.value;
if(username=="") {
window.alert("请填写用户名!");
form1.username.focus();
return false;
}
else {
createRequest('checkname.php?username='+username+'&nocache='+new Date().getTime());
}
}
header('Content-type: text/html;charset=GB2312'); //指定发送数据的编码格式为GB2312
$link=mysql_connect("localhost","root","root");
mysql_select_db("db_database",$link);
$GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE' , $RequestAjaxString); //Ajax中先用encodeURIComponent对要提交的中文进行编码
mysql_query("set names gb2312");
$username=$_GET[username];
$sql=mysql_query("select * from tb_user where name='".$username."'");
$info=mysql_fetch_array($sql);
if ($info){
echo "很报歉!用户名[".$username."]已经被注册!";
}else{
echo "祝贺您!用户名[".$username."]没有被注册!";
}
?>
类别添加
var http_request = false;
function createRequest(url) {
//初始化对象并发出XMLHttpRequest请求
http_request = false;
if (window.XMLHttpRequest) { //Mozilla等其他浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) { //IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert("不能创建XMLHTTP实例!");
return false;
}
http_request.onreadystatechange = alertContents; //指定响应方法
http_request.open("GET", url, true); //发出HTTP请求
http_request.send(null);
}
function alertContents() { //处理服务器返回的信息
if (http_request.readyState == 4) {
if (http_request.status == 200) {
sort_id.innerHTML=http_request.responseText; //设置sort_id HTML文本替换的元素内容
} else {
alert('您请求的页面发现错误');
}
}
}
function checksort() {
var txt_sort = form1.txt_sort.value;
if(txt_sort=="") {
window.alert("请填写文章类别!");
form1.txt_sort.focus();
return false;
}
else {
createRequest('checksort.php?txt_sort='+txt_sort);
}
}
$link=mysql_connect("localhost","root","root");
mysql_select_db("db_database",$link);
$GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE',$RequestAjaxString); //Ajax中先用encodeURIComponent对要提交的中文进行编码
mysql_query("set names gb2312");
$sort=$_GET[txt_sort];
mysql_query("insert into tb_sort(sort) values('$sort')");
header('Content-type: text/html;charset=GB2312'); //指定发送数据的编码格式为GB2312
?>
|
$link=mysql_connect("localhost","root","root"); mysql_select_db("db_database23",$link); $GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE' , $RequestAjaxString); //Ajax中先用encodeURIComponent对要提交的中文进行编码 mysql_query("set names gb2312"); $sql=mysql_query("select distinct * from tb_sort group by sort"); $result=mysql_fetch_object($sql); do{ header('Content-type: text/html;charset=GB2312'); //指定发送数据的编码格式为GB2312 ?>
}while($result=mysql_fetch_object($sql)); ?> xml基础技术 了解xml,使用simpleXML解析文档的方法遍历xml文档,修改,保存xml,创建xml文档的方法 xml语法xml文档结构,xml声明,处理指令,注解,xml元素,xml属性,使用cdata标记,xml命令空间。 XML文档结构 XML声明 处理指令 xml-stylesheet:样式表单处理指令type="text/css":设定了文档所使用的样式是csshref="111.css":设定了样式文件的地址 XML属性 <标签 属性名="属性值" 属性名=""…>内容标签> SimpleXML创建SimpleXML对象Simplexml_load_file()函数,将指定的文件解析到内存中Simplexml_load_string()函数,将创建的字符串解析到内存当中Simplexml_load_date()函数,将一个使用dom函数创建的domDocument对象导入到内存当中 遍历所有子元素children()方法和foreach循环语句可以遍历所有子节点元素 遍历所有属性SimpleXML对象中的attributes()方法
header('Content-Type:text/html;charset=utf-8'); ?>
/* 第一种方法 */ $xml_1 = simplexml_load_file("5.xml"); print_r($xml_1); /* 第二种方法 */ $str = << XML; $xml_2 = simplexml_load_string($str); echo ' print_r($xml_2); /* 第三种方法 */ $dom = new domDocument(); $dom -> loadXML($str); $xml_3 = simplexml_import_dom($dom); echo ' print_r($xml_3); ?>
header('Content-Type:text/html;charset=utf-8'); ?>
$str = << XML; $xml = simplexml_load_string($str); foreach($xml->children() as $layer_one){ print_r($layer_one); echo ' foreach($layer_one->children() as $layer_two){ print_r($layer_two); echo ' } } ?>
$str = << XML; $xml = simplexml_load_string($str); foreach($xml->children() as $layer_one){ foreach($layer_one->attributes() as $name => $vl){ echo $name.'::'.$vl; } echo ' foreach($layer_one->children() as $layer_two){ foreach($layer_two->attributes() as $nm => $vl){ echo $nm."::".$vl; } echo ' } } ?>
header('Content-Type:text/html;charset=utf-8'); ?>
$str = << XML; $xml = simplexml_load_string($str); echo $xml[name].' echo $xml->book[0]->computerbook.' echo $xml->book[1]->computerbook['name'].' ?>
header('Content-Type:text/html;charset=utf-8'); $str=<< XML; $xml = simplexml_load_string($str); echo $xml[name].' $xml->book->computerbook['type'] = iconv('gb2312','utf-8','PHP123'); $xml->book->computerbook = iconv('gb2312','utf-8','PHP456'); echo $xml->book->computerbook['type'].' => '; echo $xml->book->computerbook; ?>
$xml = simplexml_load_file('10.xml'); $xml->book->computerbook['type'] = iconv('gb2312','utf-8','PHP1'); $xml->book->computerbook = iconv('gb2312','utf-8','PHP2'); $modi = $xml->asXML(); file_put_contents('10.xml',$modi); $str = file_get_contents('10.xml'); echo $str; ?>
//Message_XML类,继承PHP5的DomDocument类 class Message_XML extends DomDocument{ //属性 private $Root; //方法 //构造函数 public function __construct() { parent:: __construct(); //创建或读取存储留言信息的XML文档message.xml if (!file_exists("message.xml")){ $xmlstr = " $this->loadXML($xmlstr); $this->save("message.xml"); } else $this->load("message.xml"); } public function add_message($user,$address){ //添加数据 $Root = $this->documentElement; //获取留言消息 $admin_id =date("Ynjhis"); $Node_admin_id= $this->createElement("admin_id"); $text= $this->createTextNode(iconv("GB2312","UTF-8",$admin_id)); $Node_admin_id->appendChild($text); $Node_user = $this->createElement("user"); $text = $this->createTextNode(iconv("GB2312","UTF-8",$user)); $Node_user->appendChild($text); $Node_address = $this->createElement("address"); $text= $this->createTextNode(iconv("GB2312","UTF-8",$address)); $Node_address->appendChild($text); $Node_Record = $this->createElement("record"); $Node_Record->appendChild($Node_admin_id); $Node_Record->appendChild($Node_user); $Node_Record->appendChild($Node_address); //加入到根结点下 $Root->appendChild($Node_Record); $this->save("message.xml"); echo ""; } public function delete_message($admin_id){ //删除数据 $Root = $this->documentElement; $xpath = new DOMXPath($this); $Node_Record= $xpath->query("//record[admin_id='$admin_id']"); $Root->removeChild($Node_Record->item(0)); $this->save("message.xml"); echo ""; } public function show_message(){ //读取数据 $root=$this-documentElement; $xpath=new DOMXPath($this); $Node_Record=$this->getElementsByTagName("record"); $Node_Record_length=$Node_Record->length; print" print" print"用户名"; print" print"留言信息 for($i=0;$i<$Node_Record->length;$i++){ $k=0; foreach($Node_Record->item($i)->childNodes as $articles){ $field[$k]=iconv("UTF-8","GB2312",$articles->textContent); $k++; } print" print" print"$field[1]"; print" print"$field[2]"; print" print"删除 print" }} public function post_message(){ print " } } ?> td,body{font-size:12px} a:link { text-decoration: none; } a:visited { text-decoration: none; } a:hover { text-decoration: none; } a:active { text-decoration: none; }
$HawkXML = new Message_XML; $Action =""; if(isset($_GET['Action'])) $Action = $_GET['Action']; switch($Action){ case "show_message": //查看 $HawkXML->show_message(); break; case "post_message": //提交 $HawkXML->post_message(); break; case "add_message": //添加 $HawkXML->add_message($_POST['user'],$_POST['address']); break; case "delete_message": //删除 $HawkXML->delete_message($_GET['admin_id']); break; } ?>
//Message_XML类,继承PHP5的DomDocument类 class Message_XML extends DomDocument{ //属性 private $Root; //方法 //构造函数 public function __construct() { parent:: __construct(); //创建或读取存储留言信息的XML文档message.xml if (!file_exists("message.xml")){ $xmlstr = " $this->loadXML($xmlstr); $this->save("message.xml"); } else $this->load("message.xml"); } public function add_message($user,$address){ //添加数据 $Root = $this->documentElement; //获取留言消息 $admin_id =date("Ynjhis"); $Node_admin_id= $this->createElement("admin_id"); $text= $this->createTextNode(iconv("GB2312","UTF-8",$admin_id)); $Node_admin_id->appendChild($text); $Node_user = $this->createElement("user"); $text = $this->createTextNode(iconv("GB2312","UTF-8",$user)); $Node_user->appendChild($text); $Node_address = $this->createElement("address"); $text= $this->createTextNode(iconv("GB2312","UTF-8",$address)); $Node_address->appendChild($text); $Node_Record = $this->createElement("record"); $Node_Record->appendChild($Node_admin_id); $Node_Record->appendChild($Node_user); $Node_Record->appendChild($Node_address); //加入到根结点下 $Root->appendChild($Node_Record); $this->save("message.xml"); echo ""; } public function show_message(){ //读取数据 $root=$this-documentElement; $xpath=new DOMXPath($this); $Node_Record=$this->getElementsByTagName("record"); $Node_Record_length=$Node_Record->length; print" print" print"用户名"; print" print"留言信息 for($i=0;$i<$Node_Record->length;$i++){ $k=0; foreach($Node_Record->item($i)->childNodes as $articles){ $field[$k]=iconv("UTF-8","GB2312",$articles->textContent); $k++; } print" print" print"$field[1]"; print" print"$field[2]"; print" print" }} public function post_message(){ print " } } ?> td,body{font-size:12px} a:link { text-decoration: none; } a:visited { text-decoration: none; } a:hover { text-decoration: none; } a:active { text-decoration: none; }
$HawkXML = new Message_XML; $Action =""; if(isset($_GET['Action'])) $Action = $_GET['Action']; switch($Action){ case "show_message": //查看 $HawkXML->show_message(); break; case "post_message": //提交 $HawkXML->post_message(); break; case "add_message": //添加 $HawkXML->add_message($_POST['user'],$_POST['address']); break; } ?> |