php+ajax制作无刷新留言板


Posted in PHP onOctober 27, 2015

本文就是和大家分享一款由php结合ajax实现的无刷新留言板,先给大家看一下最后的效果图:

php+ajax制作无刷新留言板

数据库连接代码如下:

<?php
$conn = @mysql_connect("localhost","root","root") or die ("MySql连接错误");
mysql_select_db("demo",$conn);
mysql_query("set names 'utf8'");
?>

index.php文件代码如下:

<!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">
<link href="bbs.css" type="text/css" rel="stylesheet">
<title>无刷新显示回帖</title>
<script src="bbs.js" type="text/javascript"></script>
</head>

<body>
<h1>无刷新显示回帖</h1>
<div id="thread">
<?php
include("conn.php");
$sql = "select * from `bbs_post` where `threadid` ='1' order by id asc";
$query =mysql_query($sql);
while($row = mysql_fetch_array($query)){ 
?>
 <div class="post" id="post<?php echo $row['id'];?>">
    <div class="post_title"><?php echo $row['title'];?> [<?php echo $row['username'];?>]</div>
    <div class="post_content"><pre><?php echo $row['content'];?></pre></div>
   </div>
<?php
}
?>
</div>

<table class="reply">
<tr>
 <td colspan="2" class="title">回帖<input type="hidden" name="threadid" id="threadid" value="1"></td>
</tr>
<tr>
 <td>姓名:</td>
 <td><input type="text" name="username" id="username"></td>
</tr>
<tr>
 <td>标题:</td>
 <td><input type="text" name="post_title" id="post_title"></td>
</tr>
<tr>
 <td>内容:</td>
 <td><textarea name="post_content" id="post_content"></textarea></td>
</tr>
<tr>
 <td colspan="2"><input type="button" onclick="submitPost()" value="提交"></td>
</tr>
</table>
</body>
</html>

bbspost.php文件代码如下

<?php
include("conn.php");
$title = $_POST["title"]; //获取title
$content = $_POST["content"]; //获取content
$username = $_POST["username"]; //获取username
$threadId = $_POST["threadid"]; //获取threadid


$sql="insert into bbs_post (title,content,username,threadid) " .
 "values ('$title','$content','$username','$threadId')";
 mysql_query($sql);
 //传回最后一次使用 INSERT 指令的 ID
$responseId=mysql_insert_id();
echo $responseId;
?>

bbs.js文件里面包括了大量ajax文件,代码如下

//先创建一个空的bbs.js文件,并修改其属性为utf-8,才能保存中文。
var xmlHttp;      //用于保存XMLHttpRequest对象的全局变量
var username;      //用于保存姓名
var title;       //用于保存标题
var content;      //用于保存内容
var threadid;      //用于保存主题编号

//用于创建XMLHttpRequest对象
function createXmlHttp() {
 //根据window.XMLHttpRequest对象是否存在使用不同的创建方式
 if (window.XMLHttpRequest) {
  xmlHttp = new XMLHttpRequest();     //FireFox、Opera等浏览器支持的创建方式
 } else {
  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
 }
}

//提交回帖到服务器
function submitPost() {
 //获取帖子中姓名、标题、内容、主题编号四部分信息
 username = document.getElementById("username").value;
 title = document.getElementById("post_title").value;
 content = document.getElementById("post_content").value;
 threadid = document.getElementById("threadid").value;
 if (checkForm()) {
  createXmlHttp();         //创建XMLHttpRequest对象
  xmlHttp.onreadystatechange = submitPostCallBack; //设置回调函数
  xmlHttp.open("POST", "bbspost.php", true);   //发送POST请求
  //设置POST请求体类型
  xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xmlHttp.send("username=" + encodeURI(username) +
      "&title=" + encodeURI(title) +
      "&content=" + encodeURI(content) +
      "&threadid=" + threadid);    //发送包含四个参数的请求体
 }
}

//检查表单是否内容已填写完毕
function checkForm() {
 if (username == "") {
  alert("请填写姓名");
  return false;
 } else if (title == "") {
  alert("请填写标题");
  return false;
 } else if (content == "") {
  alert("请填写内容");
  return false;
 }
 return true;
}

//获取查询选项的回调函数
function submitPostCallBack() {
 if (xmlHttp.readyState == 4) {
alert(xmlHttp.responseText);
  createNewPost(xmlHttp.responseText);
 }
}

//创建新的回帖
function createNewPost(postId) {
 //清空当前表单中各部分信息
 document.getElementById("post_title").value = "";
 document.getElementById("post_content").value = "";
 document.getElementById("username").value = "";

 var postDiv = createDiv("post", ""); //创建回帖的外层div
 postDiv.id = "post" + postId;   //给新div赋id值

 var postTitleDiv = createDiv("post_title", title + " [" + username + "]"); //创建标题div
 var postContentDiv = createDiv("post_content", "<pre>" + content + "</pre>"); //创建内容div
 postDiv.appendChild(postTitleDiv);       //在外层div追加标题
 postDiv.appendChild(postContentDiv);      //在外层div追加内容

 document.getElementById("thread").appendChild(postDiv);  //将外层div追加到主题div中
}

//根据className和text创建新的div
function createDiv(className, text) {
 var newDiv = document.createElement("div");
 newDiv.className = className;
 newDiv.innerHTML = text;
 return newDiv;
}

bbs.css文件如下:

/* 页面基本样式 */
body, td, input, textarea {
 font-family:Arial;
 font-size:12px;
}

/* 主题的样式 */
#thread {
 border:1px solid black;
 width:300px;
 margin-bottom:10px;
}

/* 提示信息div的样式 */
#statusDiv {
 border:1px solid #999;
 background:#FFFFCC;
 width:100px;
 position:absolute;
 top:50%;
 left:50%;
 margin:-50px 0 0 -100px;
 width:280px;
}

/* 帖子的样式 */
div.post {
 border-bottom:1px solid black;
 padding:5px;
}

/* 帖子title的样式 */
div.post_title {
 border-bottom:1px dotted #0066CC;
 font-weight:bold;
}

/* 帖子content的样式 */
div.post_content {
 font-size:12px;
 margin:5px;
}

/* 回帖表格基本样式 */
table.reply {
 border-collapse:collapse;
 width:300px;
}

/* 回帖表格单元格样式 */
table.reply td {
 border:1px solid black;
 padding:3px;
}

/* 回帖表格表头样式 */
table.reply td.title {
 background:#003366;
 color:#FFFFFF;
}

/* 表单元素样式 */
input, textarea {
 border:1px solid black;
}

/* 文字区域样式 */
textarea {
 width:200px;
 height:50px;
}

/* 预定义格式样式 */
pre {
 margin:0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
怎样才能成为PHP高手?学会“懒惰”的编程
Dec 05 PHP
php模板中出现空行解决方法
Mar 08 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
ThinkPHP分页实例
Oct 15 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
微信支付开发订单查询实例
Jul 12 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
php 基础函数
Feb 10 PHP
一个实用的php验证码类
Jul 06 PHP
php实现的生成排列算法示例
Jul 25 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 PHP
一个完整的php文件上传类实例讲解
Oct 27 #PHP
php邮件发送的两种方式
Apr 28 #PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 #PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 #PHP
PHP测试成功的邮件发送案例
Oct 26 #PHP
php使用APC实现实时上传进度条功能
Oct 26 #PHP
php需登录的文件上传管理系统
Mar 21 #PHP
You might like
PHP开发中常用的8个小技巧
2008/08/27 PHP
PHP 数据库树的遍历方法
2009/02/06 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
js实现无缝滚动特效
2015/12/20 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
javascript学习之json入门
2016/12/22 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
行政经理岗位职责
2013/11/09 职场文书
信息专业个人的自我评价
2013/12/27 职场文书
好的促销活动方案
2014/08/21 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
元旦主持词开场白
2015/05/29 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server