AJAX的应用
用AJAX实现数据显示与删除事件
主页面:
<!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>无标题文档</title>
<script src="../jquery-1.11.2.min.js"></script>
<style type="text/css">
.sc
{
width:70px;
height:30px;
background-color:#06F;
color:#FFF;
text-align:center;
line-height:30px;
vertical-align:middle;
font-size:18px;
}
.sc:hover{ cursor:pointer;
background-color:#F60;}
</style>
</head> <body>
<input type="button" id="btn" value="显示数据" />
<table id="xianshi" width="100%" border="1" cellpadding="0" cellspacing="0">
</table>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) { $("#btn").click(function(){
ShowAll();
Bindsc();
}) function Bindsc() //绑定删除事件
{
$(".sc").click(function(){
var code = $(this).attr("bs"); //获取主键值
$.ajax({ url:"Delete.php",
data:{code:code},
type:"POST",
dataType:"TEXT",
success: function(data){ if(data.trim()=="OK")
{
//删除成功后再执行一遍显示全部信息与绑定删除事件的方法,这样就不用刷新页面了
ShowAll();
Bindsc(); //调用自身方法,因为是在点击删除的时候才执行,所以不会无限循环
}
else
{
alert( "删除失败!");
} } });
})
} function ShowAll() //显示全部信息
{
$.ajax({
async:false, //AJAX必须同步,显示完信息再绑定删除事件
url:"ChuLi.php",
dataType:"TEXT", //AJAX返回的数据类型是"TEXT"就必须返回字符串
success: function(data){
var str = "<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td><td>生日</td><td>操作</td></tr>";
//将返回的字符串拆分成数组
var hang = data.split("|");
for(var i=0;i<hang.length;i++)
{
var lie = hang[i].split("^");
/*str+="<tr><td>"+lie[0]+"</td><td>"+lie[1]+"</td><td>"+lie[2]+"</td><td>"+lie[3]+
"</td><td>"+lie[4]+"</td><td></td></tr>";*/
//字符串太长,显得很乱,像这种列数比较多的可以嵌套循环
str+="<tr>";
for(var j=0;j<lie.length;j++)
{
str+="<td>"+lie[j]+"</td>";
}
str+="<td><div class='sc' bs='"+lie[0]+"'>删除</div></td>"; //添加的bs属性存储主键值
str+="</tr>";
}
$("#xianshi").html(str); } });
} });
</script>
显示信息处理页面:
<?php
include("../DB.class.php");
$db = new DB();
$sql = "select * from Info";
$attr = $db->Query($sql);
/*返回二维数组,因为返回数据类型是"TEXT",所以要将二维数组变为字符串,二维数组格式如下:
p001 张三
p002 李四
p003 王五 将列之间用"^"拼接,行之间用"|"拼接,格式如下: echo "p001^张三|p002^李四|p003^王五";*/ $str=""; //先定义字符串,后面要用
foreach($attr as $v)
{
$str =$str.implode("^",$v); //每一列之间用"^"拼接
$str = $str."|"; //循环完一行后面加上"|"
}
$str = substr($str,0,strlen($str)-1); //将最后面的"|"截掉
echo $str; //调用AJAX返回字符串的方法
echo $db->StrQuery($sql);
删除事件处理页面:
<?php
$code = $_POST["code"];
include("../DB.class.php");
$db = new DB();
$sql = "delete from Info where Code = '{$code}'"; $r = $db->Query($sql,1);
if($r)
{
echo "OK";
}
else
{
echo "NO";
}
注意:本例中删除事件用的是div,当然也可以用<a></a>、button等,但因为要删除数据,所以需要主键值,这就要求div中要存储主键值,所以在div中自定义一个属性bs用来存储主键值。
注意:有些方法调用自身会无限循环,例如:
<script type="text/javascript">
function Test()
{
alert("aa");
Test();
} </script>
本例中调用自身方法,因为是在点击删除的时候才执行,所以不会无限循环
调用AJAX返回字符串的方法封装到数据库类里面:
class DB
{
public $host="localhost"; //服务器地址 默认值为localhost
public $uid="root"; //数据库用户名 默认值为root
public $pwd="123"; //数据库密码 默认值为123
//AJAX调用返回字符串
//用聚合函数时返回字符串比较方便
public function StrQuery($sql,$type=0,$db="mydb")
{
//1.造连接对象
$conn = new MySQLi($this->host,$this->uid,$this->pwd,$db);
//2.判断连接是否出错
!mysqli_connect_error() or die("连接失败!");
//3.执行SQL语句
$result=$conn->query($sql);
//4.判断语句类型
if($type==0)
{
$attr = $result->fetch_all(); //返回二维数组
$str = "";
//如果是查询语句,返回字符串
for($i=0;$i<count($attr);$i++)
{
for($j=0;$j<count($attr[$i]);$j++)
{
$str=$str.$attr[$i][$j];
$str= $str."^"; //每一列后面拼接"^"
}
$str=substr($str,0,strlen($str)-1); //把最后的"^"截掉
$str=$str."|"; //每一行后面拼接"|"
}
$str=substr($str,0,strlen($str)-1); //把最后的"|截掉"
return $str; //返回字符串 }
else //如果是其他语句
{
if($result)
{
echo "OK";
}
else
{
echo "NO";
}
}
} }
在用聚合函数查询时,StrQuery()比较方便,直接输出字符串即可:
<?php
include("../DB.class.php");
$db = new DB();
$sql = "select count(*) from Info where Code = 'p001'";
//用Query()方法
$attr = $db->Query($sql);
echo $attr[0][0];
//用StrQuery()方法
echo $db->StrQuery($sql);
数据库类里面可以多封装一些方法,用熟之后可以很方便的根据需要调用相应方法
AJAX的应用的更多相关文章
- jQuery之ajax实现篇
jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...
- Ajax及跨域
概念 Ajax Ajax,Asynchronous JavaScript and XML,字面意思:异步的 JavaScript 和 XML,是指一种创建交互式网页应用的网页开发技术. 用于异步地去获 ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
- ABP文档 - Javascript Api - AJAX
本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net ...
- ajax异步请求
做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...
- 调用AJAX做登陆和注册
先建立一个页面来检测一下我们建立的用户名能不能用,看一下有没有已经存在的用户名吗 可以通过ajax提示一下 $("#uid").blur(function(){ //取用户名 va ...
- Ajax 概念 分析 举例
Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...
- ajax
常见的HTTP状态码状态码:200 请求成功.一般用于GET和POST方法 OK301 资源移动.所请求资源移动到新的URL,浏览器自动跳转到新的URL Moved Permanently304 未修 ...
- 学习笔记之MVC级联及Ajax操作
由于刚转型到MVC,MVC的架构模式很多不是很清楚,比如今天就想做个级联的操作,因为之前的ASP.NET的方式是通过:控件-->添加事件-->后台编写级联事件进行触发,但是这个MVC就不同 ...
- javascript表单的Ajax 提交插件的使用
Ajax 提交插件 form.js 表单的下载地址:官方网站:http://malsup.com/jquery/form/ form.js 插件有两个核心方法:ajaxForm()和ajaxSubmi ...
随机推荐
- wireshark抓包常见提示含义解析
原文转自:http://blog.sina.com.cn/s/blog_987e00020102wq60.html http://www.cnblogs.com/redsmith/p/5462547. ...
- flume A simple example
http://flume.apache.org/FlumeUserGuide.html A simple example
- CentOS卸载系统自带的OpenJDK
查看目前系统的jdk: rpm -qa | grep jdk 得到的结果: $ rpm -qa | grep jdk java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el ...
- PHPWord使用方法
官方文档 github地址 一.安装 直接使用composer安装,链接地址 composer require phpoffice/phpword 二.简单使用 require_once 'PhpO ...
- 定时器(setTimeout/setInterval)调用带参函数失效解决方法
也许你曾碰到过这样的问题,不管是setInterval()还是setTimeout(),当code参数里放一个带参函数时,定时器都会失效,看下面这个例子: function test(str){ al ...
- 【spring boot】在spring boot下使用多线程
使用场景: 方法处理到某一步,需要将信息交给另一个线程去处理!! =================================================================== ...
- php 设置地区时间
date_default_timezone_set('Asia/ShangHai');
- 【转】Monkey测试2——Monkey测试策略
Monkey的测试策略 一. 分类 Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象.目的及类型如下: 测试的类型分为:应用程序的稳定性测试和压力测试 测试对象分为:单一a ...
- Eclipse 内容辅助
Eclipse 内容辅助 使用内容辅助 Eclipse中我们可以使用代码提示来加快开发速度,默认是输入"."后出现自动提示,用于类成员的自动提示. 设置自动提示的配置在:windo ...
- Chromium浏览器组件设计意图
在文章開始之前.我要叽歪几句,一上来就看Chrome的代码.简直晕头转向,摸来摸去莫不着头脑,好不easy看了一点点代码.却犹如瞎子摸象.无法众观全局.以下这篇小文,简介当中一个重要的模块--Comp ...