简单的ajax评论完整代码
数据库结构CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(128) collate utf8_unicode_ci NOT NULL default '',
`url` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`email` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`body` text collate utf8_unicode_ci NOT NULL,
`dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
演示
PHP Code
<?php
// Error reporting:
error_reporting(E_ALL^E_NOTICE);
include "conn.php";
include "comment.class.php";
/*
/ Select all the comments and populate the $comments array with objects
*/
$comments = array();
$result = mysql_query("SELECT * FROM comments ORDER BY id ASC");
while($row = mysql_fetch_assoc($result))
{
$comments[] = new Comment($row);
}
?>
PHP Code
<div id="main">
<?php
/*
/ Output the comments one by one:
*/
foreach($comments as $c){
echo $c->markup();
}
?>
<div id="addCommentContainer">
<p>Add a Comment</p>
<form id="addCommentForm" method="post" action="">
<div>
<label for="name">Your Name</label>
<input type="text" name="name" id="name" />
<label for="email">Your Email</label>
<input type="text" name="email" id="email" />
<label for="url">Website (not required)</label>
<input type="text" name="url" id="url" />
<label for="body">Comment Body</label>
<textarea name="body" id="body" cols="20" rows="5"></textarea>
<input type="submit" id="submit" value="Submit" />
</div>
</form>
</div>
</div>
submit.php
PHP Code
<?php
// Error reporting:
error_reporting(E_ALL^E_NOTICE);
include "conn.php";
include "comment.class.php";
/*
/ This array is going to be populated with either
/ the data that was sent to the script, or the
/ error messages.
/*/
$arr = array();
$validates = Comment::validate($arr);
if($validates)
{
/* Everything is OK, insert to database: */
mysql_query(" INSERT INTO comments(name,url,email,body)
VALUES (
'".$arr['name']."',
'".$arr['url']."',
'".$arr['email']."',
'".$arr['body']."'
)");
$arr['dt'] = date('r',time());
$arr['id'] = mysql_insert_id();
/*
/ The data in $arr is escaped for the mysql query,
/ but we need the unescaped variables, so we apply,
/ stripslashes to all the elements in the array:
/*/
$arr = array_map('stripslashes',$arr);
$insertedComment = new Comment($arr);
/* Outputting the markup of the just-inserted comment: */
echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));
}
else
{
/* Outputtng the error messages */
echo '{"status":0,"errors":'.json_encode($arr).'}';
}
?>
comment.class.php
PHP Code
<?php
class Comment
{
private $data = array();
public function __construct($row)
{
/*
/ The constructor
*/
$this->data = $row;
}
public function markup()
{
/*
/ This method outputs the XHTML markup of the comment
*/
// Setting up an alias, so we don't have to write $this->data every time:
$d = &$this->data;
$link_open = '';
$link_close = '';
if($d['url']){
// If the person has entered a URL when adding a comment,
// define opening and closing hyperlink tags
$link_open = '<a href="'.$d['url'].'">';
$link_close = '</a>';
}
// Converting the time to a UNIX timestamp:
$d['dt'] = strtotime($d['dt']);
// Needed for the default gravatar image:
$url = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/img/default_avatar.gif';
return '
<div class="comment">
<div class="avatar">
'.$link_open.'
<img src="" />
'.$link_close.'
</div>
<div class="name">'.$link_open.$d['name'].$link_close.'</div>
<div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.date('d M Y',$d['dt']).'</div>
<p>'.$d['body'].'</p>
</div>
';
}
public static function validate(&$arr)
{
/*
/ This method is used to validate the data sent via AJAX.
/
/ It return true/false depending on whether the data is valid, and populates
/ the $arr array passed as a paremter (notice the ampersand above) with
/ either the valid input data, or the error messages.
*/
$errors = array();
$data = array();
// Using the filter_input function introduced in PHP 5.2.0
if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
{
$errors['email'] = 'Please enter a valid Email.';
}
if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
{
// If the URL field was not populated with a valid URL,
// act as if no URL was entered at all:
$url = '';
}
// Using the filter with a custom callback function:
if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
{
$errors['body'] = 'Please enter a comment body.';
}
if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
{
$errors['name'] = 'Please enter a name.';
}
if(!empty($errors)){
// If there are errors, copy the $errors array to $arr:
$arr = $errors;
return false;
}
// If the data is valid, sanitize all the data and copy it to $arr:
foreach($data as $k=>$v){
$arr[$k] = mysql_real_escape_string($v);
}
// Ensure that the email is lower case:
$arr['email'] = strtolower(trim($arr['email']));
return true;
}
private static function validate_text($str)
{
/*
/ This method is used internally as a FILTER_CALLBACK
*/
if(mb_strlen($str,'utf8')<1)
return false;
// Encode all html special characters (<, >, ", & .. etc) and convert
// the new line characters to <br> tags:
$str = nl2br(htmlspecialchars($str));
// Remove the new line characters that are left
$str = str_replace(array(chr(10),chr(13)),'',$str);
return $str;
}
}
顺昌石材 www.rzshunchang.com
五莲花路沿石
李慎洲厂 www.shenzhoustone.com
路沿石
分享到:
相关推荐
本文档提供了一个简单的基于Ajax实现的评论系统完整代码案例。 #### 二、数据库设计与表结构 **数据库表结构**: 文档中给出了一个名为 `comments` 的数据库表结构。该表用于存储用户提交的评论数据。 - **字段...
【ASP+AJAX评论系统代码详解】 在网页开发中,用户互动性是衡量网站质量的重要标准之一,而评论系统则是实现这一目标的关键组件。本文将深入解析“ASP+AJAX评论系统”这一技术方案,帮助开发者理解其核心原理与实现...
AJAX显示文章列表、AJAX评论、AJAX留言、突出热门显示最新文章、可以划分无限个文章种类、可以制作多个友情链接、评论留言AJAX分页显示、提供文章和评论的RSS源、全局过滤器防SQL注入、后台管理等等。本系统界面友好...
在"自己写的最简单Ajax例子"中,我们可以看到两个简单的实例,适合初学者入门学习。 首先,我们来详细讲解一下Ajax的核心概念: 1. 异步通信:Ajax的核心特性就是异步,这意味着在发送请求后,浏览器不会等待...
以下是一个简单的Ajax GET请求的原代码示例: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'data.json', true); xhr.onreadystatechange = function() { if (this.readyState === 4 && this....
HTML5弹幕文字评论代码是一种常见的在线互动方式,特别是在视频分享网站、直播平台以及某些社交媒体上,用户可以发送即时评论,这些评论以滚动的方式在屏幕上显示,形如“弹幕”。这种效果通常由JavaScript库实现,...
- **基本Ajax请求**:展示如何创建和发送一个简单的Ajax请求,以及如何处理返回的数据。 - **异步数据加载**:例如,动态加载评论、新闻或者搜索结果。 - **错误处理**:学习如何捕获和处理网络或服务器端的错误。 -...
"asp+AJAX简单评论系统"是指利用ASP作为后端处理和数据存储,而前端使用AJAX技术来实现实时的、无刷新的评论提交和显示。这样的设计可以提供更加流畅的用户体验,用户在添加评论后无需等待页面重新加载,评论就能...
代码简单,较为通用,容易整合到其他系统中, 带有评论支持和反对的投票, 可以引用评论,实现盖楼功能, 简单的验证,有验证码防广告功能. 允许程序在 register_globals = off 的环境下工作 安装:将sql.txt导入到...
总结来说,"jQuery评论插件可回复评论代码.zip"提供了一个完整的评论系统框架,通过jQuery实现了评论和回复的交互功能。对于熟悉JavaScript和jQuery的开发者来说,这是一个快速构建动态评论系统的实用工具。在实际...
**Ajax(Asynchronous JavaScript ...3. 实战项目:利用Ajax构建一个简单的评论系统或数据检索功能。 通过实践这些开源代码,初学者可以更好地理解Ajax的工作机制,并将其应用于实际项目中,提升自己的Web开发技能。
不过,由于没有给出具体代码内容,这里只能假设它可能包含了一些用于创建和管理Ajax请求的函数或类。 一个简单的Ajax请求示例可以这样编写: ```javascript function sendAjaxRequest(url, callback) { var xhr =...
在本例中,通过使用jQuery来编写Ajax调用代码,可以大幅简化JavaScript代码,减少跨浏览器兼容性问题。使用jQuery可以使得Ajax的调用更加直观,例如通过简单的方法调用,就可以发送GET或POST请求,并在回调函数中...
新闻评论系统的数据库设计相对简单,通常只需要一个表来存储评论信息。例如,这里我们设计一个名为`PL`的表,包括以下几个字段: - **id**:自动编号,作为主键。 - **user**:文本类型,用于记录评论者的用户名。 ...
文件结构与命名:项目中的"comment"可能代表一系列与评论功能相关的文件,如HTML文件(包含评论表单和显示评论的模板)、CSS文件(用于样式设计)、JavaScript文件(包含jQuery和Ajax代码)以及PHP文件(处理评论的...
1. **基本Ajax请求**:最简单的Ajax请求示例,展示如何创建XMLHttpRequest对象,打开连接,设置请求方法(GET或POST),发送请求,并处理响应。 2. **异步数据加载**:此示例可能演示了如何从服务器获取数据并在...
【描述】提到的"简单的仿新浪微博发布评论js代码"是一个轻量级的解决方案,它不仅实现了评论的发布功能,还考虑了浏览器兼容性,特别是对ie8的支持。这意味着该代码已经过优化,可以在较旧版本的Internet Explorer...
【标题】"简洁的jQuery星级评论表单代码.zip"是一个包含使用jQuery实现的简单、直观的星级评论表单的代码资源。这个项目旨在为用户提供一个轻量级且易于定制的解决方案,以便在网站上集成用户反馈系统,尤其是针对...
通常,一个使用AJAX的博客系统会允许用户无刷新加载新文章、评论或进行其他互动操作,如搜索、导航等,这些都可以在不打断当前浏览体验的情况下完成。 在深入讲解AJAX技术时,我们需要了解以下几个关键知识点: 1....
在本案例中,我们将探讨如何使用原生JavaScript实现一个简单的留言板功能,允许用户发表评论。首先,我们需要理解HTML文档的基础结构,因为`index.html`和`demo.html`通常用于定义网页内容。 在`index.html`或`demo...