效果图
分为三个也面,分别是ajax-youku.html页面、ajax-youku-server.php页面、ajaxUtil.js页面
ajax-youku.html页面
<!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=utf-8" />
<title>视频播放-ajax评论</title>
<style>
#comment{
width:500px;
height:400px;
background-color:#FC6;
}
</style>
<script src="../../../Scripts/swfobject_modified.js" type="text/javascript"></script>
<script src="ajaxUtil.js" language="javascript" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function test(){
/*
ajax无刷新的评论技术
1、发布的评论,无刷新的显示到下面的区域
2、通过ajax把内容存到服务器上
3、获取服务器的数据,显示到评论区域
*/
var comment=$$("com");
//初始化url
var url="ajax-youku-server.php";
var params="comment="+encodeURI(comment.value);
get(url,params,processCommentData);
}
function processCommentData(xhr){
//获取div的对象
var div=document.getElementById("comment");
//产生一个段落标记
var p=document.createElement("p");
//产生一个文本节点
var text=document.createTextNode("评论内容:"+xhr.responseText);
//将文本添加到p元素 <p>text</p>
p.appendChild(text);
//将段落标记追加到div中
div.appendChild(p);
}
</script>
</head>
<body>
优酷
<hr>
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="960" height="400">
<param name="movie" value="1.swf" />
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<param name="swfversion" value="9.0.45.0" />
<!-- 此 param 标签提示使用 Flash Player 6.0 r65 和更高版本的用户下载最新版本的 Flash Player。如果您不想让用户看到该提示,请将其删除。 -->
<param name="expressinstall" value="../../../Scripts/expressInstall.swf" />
<!-- 下一个对象标签用于非 IE 浏览器。所以使用 IECC 将其从 IE 隐藏。 -->
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="1.swf" width="480" height="200">
<!--<![endif]-->
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<param name="swfversion" value="9.0.45.0" />
<param name="expressinstall" value="../../../Scripts/expressInstall.swf" />
<!-- 浏览器将以下替代内容显示给使用 Flash Player 6.0 和更低版本的用户。 -->
<div>
<h4>此页面上的内容需要较新版本的 Adobe Flash Player。</h4>
<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="获取 Adobe Flash Player" /></a></p>
</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
<script type="text/javascript">
swfobject.registerObject("FlashID");
</script>
<hr>
<textarea cols="45" id="com" rows="4"></textarea><br>
<input type="button" value="俺说两句" οnclick="test()"/>
<hr />
<div id="comment"></div>
</body>
</html>
ajaxUtil.js页面
function get(url1,params,methodName){
/*
ajax使用的基本步骤:
1、初始化ajax引擎
2、封装url(设定要请求的路径)
3、打开ajax引擎(同步方式、异步的方式;本次传输使用get还是post)
4、将要请求的信息通过引擎发送到服务器进行处理
5、监听服务器返回给ajax引擎的处理状态
6、判断是否交互完毕,如果交互完毕则取出返回的数
*/
//初始化ajax引擎
var xhr = new XMLHttpRequest();//这种方式只针对ie浏览器,并且ie6以下还有问题。
var url=url1+"?"+params+"&r="+Math.random();
//alert(url);
//打开引擎
xhr.open("get",url,true); //readyState=1
//发送请求
xhr.send(null); //readyState=2
//监听readyState值的改变,每次改变都会执行下面额函数
xhr.onreadystatechange=function (){
//如果等于4,表明交互完毕 ,我们可以取出服务器返回的内容
if(xhr.readyState==4){
//动态调用方法,为什么说是动态呢?方法的名称是个变量methodName
methodName(xhr);
}
}
}
//$$()方法用于方便取出 id="id" 的对象
function $$(id){
return document.getElementById(id);
}
ajax-youku-server.php页面
<?php
//省略了插入数据库的步骤
echo $_GET['comment'];
?>