2007-03-30

PHP中使用DOM

关键字: PHP DOM AJAX
帮别人修改了一个PHP中创建xml的ajax程序,感觉很是罗嗦,自己对PHP也不是太了解,也都是通过google才最终完成,总算是实现了功能。
一共只有两个文件,一个html页面,还有一个服务器端文件
首先是html,填写姓名、年龄、性别,然后服务器接受返回xml格式,并解析显示在test的后面。
html文件:
<script language="javascript">
function InitAjax()
{
	var ajax=false; 
	try { 
		ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
	} catch (e) { 
		try { 
			ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
		} catch (E) { 
			ajax = false; 
		} 
	}
	if (!ajax && typeof XMLHttpRequest!='undefined') { 
		ajax = new XMLHttpRequest(); 
	} 
	return ajax;
}

function saveUserInfo()
{
  	var name = document.getElementById("name");
	var age = document.getElementById("age");
	var sex = document.getElementById("sex");
	var f = document.user_info;//获取表单对象和用户信息值
 	var userName = f.user_name.value;
 	var userAge  = f.user_age.value;
 	var userSex  = f.user_sex.value;
 	//接收表单的URL地址
 	var url = "./save_info.php?user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;
 	var ajax = InitAjax();
 	ajax.open("POST", url, true); 
 	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
 	ajax.send(null);
	ajax.onreadystatechange = function() { 
  	if (ajax.readyState == 4 && ajax.status == 200) {
		alert(ajax.responseText);
		if(window.ActiveXObject){
			var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async = false;
			xmlDoc.loadXML(ajax.responseText);
		}else{
			var parser = new DOMParser();
			var xmlDoc = parser.parseFromString(ajax.responseText,"text/xml");
		}
		var hasError = xmlDoc.getElementsByTagName('error').length > 0 ? true:false; 
		if(hasError){
			alert("dom error");
		}else{
			document.getElementById("name").innerText=xmlDoc.getElementsByTagName('name')[0].childNodes[0].nodeValue;
			document.getElementById("age").innerText=xmlDoc.getElementsByTagName('age')[0].childNodes[0].nodeValue;
			document.getElementById("sex").innerText=xmlDoc.getElementsByTagName('sex')[0].childNodes[0].nodeValue;
		} 
  	 } 	
   } 
}
</script>
<form name="user_info" method="post">
	<table>
		<tr><td>姓名:<input type="text" name="user_name" /></td><td><div id="name"></div></td></tr>
		<tr><td>年龄:<input type="text" name="user_age" /></td><td id="age"></td></tr>
		<tr><td>性别:<input type="text" name="user_sex" /><br /></td><td id="sex"></td></tr>
		<tr><td><input type="button" value="提交表单" onClick="saveUserInfo()"></td><td></td></tr>
	</table> 
</form>


PHP文件:
<?php
	// create doctype
	$dom = new DOMDocument('1.0', 'UTF-8');

	$user_name=iconv('gbk','utf-8',$user_name);
	$user_age=iconv('gbk','utf-8',$user_age);
	$user_sex=iconv('gbk','utf-8',$user_sex);

	// create root element
	$root = $dom->createElement("msg");
	//$root->setAttribute('ID',"123");
	$id = $dom->createAttribute("id");
	$idValue = $dom->createTextNode("123");
	$id->appendChild($idValue);

	$root->appendChild($id);
	$dom->appendChild($root);

	// create child element
	$item = $dom->createElement("name");
	$root->appendChild($item);

	// create text node
	$text = $dom->createTextNode($user_name);
	$item->appendChild($text);

	$item = $dom->createElement("age");
	$root->appendChild($item);

	$text = $dom->createTextNode($user_age);
	$item->appendChild($text);

	$item = $dom->createElement("sex");
	$root->appendChild($item);

	$text = $dom->createTextNode($user_sex);
	$item->appendChild($text);

	// save and display tree
	echo $dom->saveXML();
?>
  • ajax.rar (1.5 KB)
  • 描述: src
  • 下载次数: 5
评论
小嘴看世界 2007-04-04
拿一个节点使用getElementsByTagName就可以了
ddbird 2007-04-03
问下,如何拿 tag的name?
发表评论

您还没有登录,请登录后发表评论

小嘴看世界
搜索本博客
我的相册
F9d2dd1b-26f5-3fa8-8934-863e273e9e39-thumb
传说中的奶牛
共 14 张
存档
最新评论