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 相关文章推荐
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
php curl基本操作详解
Jul 23 PHP
php二维数组转成字符串示例
Feb 17 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 PHP
php实现微信公众号无限群发
Oct 11 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
laravel批量生成假数据的方法
Oct 09 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 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
c#中的实现php中的preg_replace
2009/12/21 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
javascript编程起步(第二课)
2007/02/27 Javascript
lib.utf.js
2007/08/21 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
2015/06/11 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
微信小程序实现watch监听
2020/06/04 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
Django 多语言教程的实现(i18n)
2018/07/07 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
css3实现动画的三种方式
2020/08/24 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
营业员实习自我鉴定
2013/12/07 职场文书
关于爱情的广播稿
2014/01/16 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python
MySQL获取所有分类的前N条记录
2021/05/07 MySQL