最近开始PHP语言及Ajax的学习,做个小小的练习记录下来,类似于学习其他语言的”Hello World!“。
1、任务描述
学习XMLHttpRequest对象,通过XMLHttpRequest对象向服务器发出请求,通过服务器端脚本(PHP)获取返回的MySQL中的数据。
2、结构描述
服务器端
请求处理页(SimpleResponse.php)、解析页(parser.php)、模版页(template\template1.html)、数据处理页(sql.php),请求处理页根据选择的模版使用解析页提供的功能对数据进行处理,返回需要的数据。
客户端
测试页(SimpleResponse.html)
3、部分程序代码
3.1 sql.php
<?
/* 帐号密码等设定 请使用自己的数据库处理代码*/
$host = "localhost";
$user = "root";
$pass = "";
$database = "test";
function sql_query($query) {
global $host,$user,$pass,$database;
$conn=@mysql_connect( $host, $user, $pass );
$result=@mysql_db_query( $database, $query, $conn);
@mysql_data_seek($result,0);
while($row=@mysql_fetch_row($result)) {
$output[] = $row;
}
@mysql_free_result($result);
@mysql_close($conn);
return $output;
}
......
3.2 parser.php
<?
/*************************************
功能说明:解析网页模板,并替换标记输出
$filename 文件名及位置
$parser_array 格式为 $array['key']=value
***********************************/
function flag_parser($filename,$parser_array) {
$handle = fopen ($filename, "r");
$buffer = fread ($handle, filesize ($filename));
fclose ($handle);
while(list($key,$value)=each($parser_array)) {
$buffer = str_replace($key,$value,$buffer);
}
return $buffer;
}
?>
3.3 template\template1.html
<table width="100%" border="0" cellpadding="0" cellspacing="2" bgcolor="#FFEAFF">
<tr>
<td width="10%" bgcolor="#CCCCCC">{ID}</td>
<td width="30%" bgcolor="#CCCCCC">{Title}</td>
<td width="40%" bgcolor="#CCCCCC">{Des}</td>
<td width="20%" bgcolor="#CCCCCC">{Date}</td>
</tr>
</table>
3.4 simpleResponse.php
<?
$page = "template/template1.html";
include(‘sql.php’);
include(‘parser.php’);
$sql = "SELECT * FROM `ajaxdatas`";
$data = sql_query($sql);
for($i=0;$i<count($data);$i++)
{
$array['{ID}'] = $data[$i][0];
$array['{Title}'] = $data[$i][1];
$array['{Des}'] = $data[$i][2];
$array['{Date}'] = $data[$i][3];
$result .= flag_parser($page,$array);
}
echo $result;
?>
3.5 测试页(SimpleResponse.html)
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Simple XMLHttpRequest</title>
<script language="JavaScript" type="text/JavaScript">
var xmlHttp;
function createXMLHttpRequest()
{
if (window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
function startRequest()
{
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("POST","SimpleResponse.php",true);
xmlHttp.send(null);
}
function handleStateChange()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
document.getElementById("results").innerHTML = xmlHttp.responseText;
}
}
}
</script>
</head>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="2" bgcolor="#FF9900">
<tr>
<td bgcolor="#FFFFFF">
<div id="results">Click Button Get Datas </div></td>
</tr>
<tr>
<td bgcolor="#99FF00">
<form action="#">
<div align="center">
<input type="button" value="Get MySQL Datas" onclick="startRequest();" />
</div>
</form></td>
</tr>
</table>
</body>
</html>