本案例代码已经提供下载,点击这里!

AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式。

Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

在本文的例子中,为了让初学者对ajax的实现原理有一个更加深刻的认识,没有使用jquery等框架,整个异步请求都是通过编写javascript来完成。

本例共包括3个文件,分别为:

config.php 连接数据库

message.php 用户访问的留言界面,当用户发送留言时,将留言结果以异步请求的方式发送到message_ajax.php。

message_ajax.php 处理来自message.php中的异步请求并返回结果

下面我按实际编写的步骤来说明:

创建数据库和表 为了让问题不至于变得复杂,这里我是在test数据库中创建了一个表t_message。SQL语句如下:

create table t_message(id int auto_increment primary key,email varchar(100),content text);

编写用户留言界面

留言界面非常简洁,就是一个表单,在message.php中添加以下html代码如下:

Leave Message Here Email:

Content:

异步请求

使用XMLHttpRequest对象发送请求的基本步骤如下: 创建一个XMLHttpRequest的引用 告诉XMLHttpRequest对象,哪个函数会处理XMLHttpRequest对象状态的改变,为此要设置onreadystatechange属性 指定请求的属性。open() 将请求发送给服务器。send() xmlHttp.responseText将响应提供为一个串

创建一个XMLHttpRequest的引用

var xmlHttp; function createXMLHttpRequest(){ if(window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if(window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); }else{ alert("浏览器不支持XMLHttpRequest对象"); } }

创建查询字符串

function createQueryString(){ var email = document.getElementById("email").value; var content = document.getElementById("content").value; var queryString = "email="+ email + "&content="+ content ; //alert(queryString); return queryString; }

以POST方式发送异步请求

function doRequestUsingPOST(){ createXMLHttpRequest(); var url = "message_ajax.php?timeStamp=" + new Date().getTime(); var queryString = createQueryString(); xmlHttp.open("POST",url,true); xmlHttp.onreadystatechange = handleStateChange; xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); xmlHttp.send(queryString); }

处理状态变更,解析message_ajax.php返回的结果

function handleStateChange(){ if(xmlHttp.readyState == 4){ if(xmlHttp.status == 200){ parseResult(); //alert("OK"); } } } function parseResult(){ var responseDiv = document.getElementById("newmessage"); if(responseDiv.hasChildNodes()){ responseDiv.removeChild(responseDiv.childNodes[0]); } var responseText = xmlHttp.responseText;//document.createTextNode(xmlHttp.responseText); responseDiv.innerHTML = responseText; //responseDiv.appendChild(responseText); }

服务端处理异步请求

然后我们看下服务端message_ajax.php是怎样处理请求的

"; while($message = mysql_fetch_array($result)){ $onemessage = "

Email:".$message['email']."

Content:".$message['content']."";$responseText = $responseText.$onemessage;}$responseText = $responseText."";echo $responseText;?>

从上面代码可以看到,服务端首先需要接收客户端发送过来的请求,在本例中发送的参数就是email和content。

然后,服务端将这些数据保存到数据库中,并查询出数据库中最近的10条留言信息,构造成HTML字符串,并echo。

于是客户端便可接收到,实现无刷新显示最近的10条留言(当然需要留言超过10条的时候)。

如果你有神马问题,请留言讨论!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php 留言板项目 ajax,PHP Ajax留言板相关推荐

  1. Django留言板项目完整搭建

    Django留言板项目完整搭建 1.新建python虚拟环境 2.安装Django并新建Django项目 3.生成的目录说明 4.新建一些目录 1.进入虚拟环境的命令 2.可以用Django的命令来新 ...

  2. 使用ThinkPHP创建留言板项目

    一.开发环境 1.Windows7 32位操作系统 2.Web服务器:Apache2.2 32位(Apache-2.2.17-win32-x86-openssl-0.9.8o.msi) 3.PHP:P ...

  3. ThinkPHP(3.2)搭建简单留言板项目

    1.基本业务功能 >查看所有留言功能,index/index需要一个页面,用来展示当前应用程序中所有留言信息(默认页面). 展示形式:表格或者无序列表,这里用表格,方便些 >查看单条留言, ...

  4. php留言板只能留言一次,php如何实现留言板修改留言

    php实现留言板修改留言的方法:首先连接数据库并选择指定的数据库:然后设置输出编码:接着记录表单提交的修改过的留言板内容:最后执行相应的sql语句即可. 数据库为notebook表为noteinfo留 ...

  5. 六十八、完成Vue项目推荐和周末游组件,并使用Ajax发起ajax请求

    @Author:Runsen 2020/10/27. 周二.今天又是奋斗的一天. 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...

  6. js ajax 访问java函数,将url分配给Java EE项目中的ajax(js)函数

    我正在Ajax中尝试使用我的第一个项目,并且在分配指向要从服务器中获取的文件的绝对URL时遇到问题.将url分配给Java EE项目中的ajax(js)函数 这是我的函数: function fetc ...

  7. java web 实践项目(搭建web留言系统)

    声明:这是实践java的第二个项目,它主要包括以下知识: 前端:html css javascript 服务端: tomcat服务器,servlet ,jsp 后端:java 数据库:mysql 这个 ...

  8. jsp mysql留言板制作_Jsp+mysql 制作留言板

    最近大致了解了下什么是JSP,然后制作了一個小的留言板,這里寫一點制作留言板的過程,希望能給大家幫助! 一.准備工作(安裝各種所需要用到的軟件) 2.tomcat    下載地址 3.mysql    ...

  9. html简单留言板教程,JS实现简易留言板(节点操作)

    本文实例为大家分享了JS实现简易留言板的具体代码,供大家参考,具体内容如下 今天的案例主要是对节点进行操作 创建节点.添加节点.删除节点以及为节点添加内容的操作. 就是一个简单的留言板功能,可以发布留 ...

最新文章

  1. 【Java】全站编码过滤器GenericEncodingFilter代码与配置
  2. 华为鸿蒙系统手机销量,两个品牌助力华为新生,但最终会是谁拯救谁
  3. Qtum量子链帅初受邀火星特训营面对面授课
  4. kernel devel 安装与卸载
  5. GDAL读写矢量文件——Python
  6. Win 2012 OS 安装.Net Framework 3.5
  7. 编写PhotoShop支持遥感图像数据
  8. 网络安全系统性学习路线「全文字详细介绍」
  9. 你真的会用微软输入法?
  10. SpringBoot开发常用技术这些你知道吗???
  11. 计算机视觉、图像处理学习资料汇总(转)
  12. 券商卖的雪球票息高,券商赚的什么钱?(雪球原理入门)
  13. docker下运行分布式代码报nccl错误:connect returned Connection timed out,成功解决
  14. RISCV 向量指令集和NICE接口学习笔记
  15. 浅谈单片机、ARM和DSP的异同
  16. npm install 提示 path xxx/node_modules/node-sass npm ERR command failed 解决方法
  17. Vue 中 props 传值,父组件向子组件传递对象/数组可以直接修改的问题
  18. 【Godot】节点的碰撞与碰撞掩码的计算
  19. Easypoi模版导出excel
  20. 主DNS、辅助DNS、缓存DNS和基于CDN的利用DNS服务器实现负载均衡

热门文章

  1. 进程间内存共享问题[转]
  2. 自定义ListView中的分割线
  3. zookeeper数据结构及Znode类型
  4. android虚拟机鼠标左键拖动会输入C
  5. Android的权限
  6. Java Short类hashCode()方法及示例
  7. java字符串最长回文串_Java中的字符串回文程序
  8. 最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题
  9. getprivateprofilestring读不到数据_Tomcat NIO(11)请求数据读取
  10. Xamarin开发笔记—百度在线语音合成