广告
返回顶部
首页 > 资讯 > 前端开发 > html >Ajax中怎么添加与删除数据
  • 673
分享到

Ajax中怎么添加与删除数据

2024-04-02 19:04:59 673人浏览 独家记忆
摘要

ajax中怎么添加与删除数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码如下:<html> <head> <

ajax中怎么添加与删除数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

代码如下:


<html>
<head>
<title>ajax无刷新添加与删除数据</title>
<style>
body{
font-size:12px;
}
table{
border-collapse:collapse;

}
</style>
</head>
<body>
为显示更流畅,我们只读取数据库内最新的10条数据.由于在线测试人数多.都在操作一个数据库.可能会出现并发情况!
<hr/>
输入内容:<input id="str" type="input" /> <input type="button" value="确定添加" onclick="add_Post()"/>
<span id="msg" ></span>
<table border="1"><!--该表格用来显示数据内容-->
<tbody id="a"></tbody>
</table>
<span >操作提示:请用鼠标单击你想要删除的数据.然后点击删除按扭!</span>
<input id="hid_id" type="hidden" />
<input type="button" value="删除数据" onclick="del_Data()" />
<script type="text/javascript">
function ajax_xmlHttp(){
//在IE中创建xmlhttpRequest,适用于IE5.0以上所有版本
var msXmlhttp = new Array("Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP");
for(var i=0; i<msXmlhttp.length; i++){
try
{
_xmlhttp=new ActiveXObject(msXmlhttp[i]);
}
catch(e)
{
_xmlhttp=null;
}
} //循环创建基于IE浏览器的xmlhttp.结束
//如果非IE浏览器,则创建基于FireFox等浏览器的xmlhttpRequest
if(!_xmlhttp && typeof XMLHttpRequest != "undefined")
{
_xmlhttp=new XMLHttpRequest();
}
return _xmlhttp;
}

//读取数据函数
function Read(){
var ajax = ajax_xmlhttp(); //将xmlhttprequest对象赋值给一个变量.
ajax.open("post","Add_Del_Data.asp?action=read",true);//设置请求方式,请求的网页,url的action参数为read,异步请求
ajax.onreadystatechange = function(){//你也可以这里指定一个已经写好的函数名称
if(ajax.readyState == 4){//数据返回成功
if(ajax.status == 200){//http请求状态码返回ok
var xmlData = ajax.responseXML;//以xml格式接收返回的数据,并保存在xmlData变量里
var list = xmlData.getElementsByTagName("list");//在返回的数据里,获取所有list标签
if(list.length!=0){
var t = document.getElementById("a");//获取展示数据的表格
while(t.rows.length!=0){ //在读取数据时如果表格已存行.一律删除
t.removeChild(t.rows[0]);
}
for(var i=0;i<list.length;i++){
var tr = t.insertRow(t.rows.length);//有几个list就为表格增加几行.
tr.setAttribute("id",list[i].childnodes[0].firstChild.nodeValue);
tr.onclick = function(e){add_Event(e)};
var td = tr.insertCell(0);
td.innerHTML = list[i].childNodes[1].firstChild.nodeValue;
}
}
}
}
}
ajax.send(null);//提交请求,参数为null
}

window.load = Read();

function add_Event(e){
e = e || window.event;
var elem = e.target || e.srcElement;
if(elem.tagName == "TD"){
elem = elem.parentNode;
}
var table = elem.parentNode;
for(var i=0;i<table.rows.length;i++){
table.rows[i].style.background="";
}
elem.style.background="#999ccc";
document.getElementById("hid_id").value = elem.id;
}

//删除数据函数
function del_Data(){
var mesage = document.getElementById("msg");//获取显示操作信息的span
mesage.innerHTML="正在删除请稍候......";
var table = document.getElementById("a");//获取要显示数据的表格
if(table.rows.length == 0){
mesage.innerHTML = "表格内没有数据可供删除!";
return;
}
var id = document.getElementById("hid_id");
if(id.value.length == 0){
mesage.innerHTML = "您还没有选择数据!";
return;
}
var ajax = ajax_xmlhttp();//定义xmlhttprequest对象
ajax.open("post","Add_Del_data.asp?action=del",true);//设置请求方式,请求文件,异步请求

var param = "id="+escape(id.value);//获取要删除数据的id

ajax.onreadystatechange = function(){
if(ajax.readyState==4){
if(ajax.status==200){
var xml = ajax.responseXML;
var msg = xml.getElementsByTagName("msg")[0].firstChild.nodeValue;
if(msg == 0){
mesage.innerHTML = "成功删除数据!";
var tr = document.getElementById(id.value);//获取当前选择的行
tr.parentNode.removeChild(tr);//引用该行的父元素.然后删除该行.
id.value="";//删除完成清空文本框里的值,
}
if(msg == 1){
mesage.innerHTML = "服务端发生错误,删除失败!";
}
}
}
}
ajax.setRequestHeader("content-type","application/x-www-fORM-urlencoded");
ajax.send(param);
}

//提交数据函数
function add_Post(){
var msgaes = document.getElementById("msg");//用来显示提示信息
var str = document.getElementById("str");//接收输入的内容
if(str.value.length == 0){
msgaes.innerHTML = "不接受空内容!"
return;
}
msgaes.innerHTML = "正在提交";
var ajax = ajax_xmlhttp();//定义xmlhttprequest对象
ajax.open("post","Add_Del_data.asp?action=add",true);//设置请求方式,请求文件,异步请求

var param = "str="+escape(str.value);//获取你输入的内容,注意这里的str,服务端将接收str中的值
ajax.onreadystatechange = function(){
if(ajax.readyState==4){
if(ajax.status==200){
var msg = ajax.responseXML.getElementsByTagName("msg");//获取服务端返回的msg标签
if(msg[0].firstChild.nodeValue == 0){
var max_num = ajax.responseXML.getElementsByTagName("count")[0].firstChild.nodeValue;

var t = document.getElementById("a");
var tr = t.insertRow(0);
tr.setAttribute("id",max_num);
tr.onclick = function(e){add_Event(e)};
var td = tr.insertCell(0);
td.innerHTML = str.value;
str.value = "";
msgaes.innerHTML = "添加完成";
}
else if(msg[0].firstChild.nodeValue == 3){
msgaes.innerHTML = "不接受空的内容";
return;
}
else if(msg[0].firstChild.nodeValue == 1){
msgaes.innerHTML = "服务端发生错误,数据添加失败!";
return;
}
else{
msgaes.innerHTML = "该实例供学习使用.请不要恶意输入.谢谢!";
}
}
}
}
ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");//注意向服务端提交数据,必须设置该头.否则服务端会接收不到
ajax.send(param);//注意send方法向服务端提交param变量中的内容.
}
</script>
<a href="https://www.jb51.net" target="_blank">编程网+</a>
</body>
</html>


怎么样效果是不是很酷?上面的文本框里是前台的html源码.我们先来讲一下我们在前端干了什么.从body标签开始讲起.


一段友情提示的文字.告诉你会出现些什么情况!
添加数据的文本框和按扭!用来向服务端数据库写入数据内容.
一个span标签.ID为msg,用来显示你当前操作的信息
一个表格.表格内有tbody元素,id为a.用来显示读取到的数据.你可以在表格内选择要删除的数据.
一个隐藏的输入框.当你选择数据时.会把该数据的id值放到输入框里.删除时引用这个值.提交给服务端
删除数据按扭.定义了一个onclick单击事件.del_Data()函数.向服务发送删除指令
下面进入script脚本部份.script里面有5个自定义函数.分别是:ajax_xmlhttp(),Read(),add_Event(),del_Data(),add_Post().我们来一一讲解函数的作用.

1、ajax_xmlhttp();创建一个可用的XMLHTTPRequest对象,如果你还不知道什么是XMLHTTPRequest,请参阅:XMLHTTPRequest
2、Read();读取数据函数.前几篇教程中都有讲过ajax读取数据.我只讲今天读取过程中的重点,先看下服务端网页输出的xml.add_del_data.asp?action=read.从服务端传回的xml数据里获取所有的list标签以后.我们先使用getElementById方法获取到了存放数据的表格.然后循环遍历这些list 标签.每个list代表一条数据.每个list内包含着2个子元素.第1个子元素内存储着该条数据的id值,第2个子元素内存储着该条数据的文本内容.好,我们来看下Read()函数中for循环里的语句:
(1):var tr = t.insertRow(t.rows.length);每循环一个list便为表格增加一行.因为表格的每一行显示一条数据.并返回对该行的引用.
(2):tr.setAttribute("id",list[i].childNodes[0].firstChild.nodeValue);为新增的行设置一个id属性.并为该属性指定一个值.注意,这里是重点.list[i].childNodes[0].firstChild.nodeValue这句的意思是要获取每条数据中id字段的值.也就是该条数据的id值.我们将这个值写给tr的id属性.以方便我们用鼠标点击了某行以后来引用这个id.
(3):tr.onclick=function(e){add_Event(e)};紧接着再为新增的行绑定一个自定义函数.函数的名称是add_Event();
(4):var td.tr.insertCell(0);为新的增添加一列.并返回对该列的引用.
(5):td.innerHTML = list[i].childNodes[1].firstChild.nodeValue;在该列中写入第i个list的第2个子元素中的文本内容.也就是content字段里的内容了
我们把每条数据的id设定给表格中每一行的id属性.把每条数据中的content中的文本内容填写到每一行中的单元格内.至此整个数据的显示过程已完成!
 
3、add_Event(e);我们在Read函数内向表格的每一行绑定了该函数.并利用闭包技术向addEvent传递了事件对象.该函数的作用就是找出你单击的行.并获得该行数据的id:
(1):e = e || window.event;标准化事件对象.FF等浏览器利用参数传递,IE可直接使用window.event.
(2):var elem = e.target || e.srcElement; 请参阅:target或srcElement.标准化触发事件的元素.是那个元素触发了该事件.在这里的意思是说:你点击了表格中的那一行.但事实上我取到的是TD,而并非TR.这应该是传说中的事件捕获和冒泡所致.没关系我们使用tagName判断一下 如果是TD,则取该TD的父元素.这下肯定是TR了吧.呵呵.
(3):var table = elem.parentNode;取TR的父元素.就是那个tbody.并返回对tbody的引用.
(4):使用一个for循环遍历tbody中所有的行.将每行的背景颜色设置为空.
(5):elem.style.background="#999000";循环完毕以后.为你点击的这一行添加一个背景色.
(6):document.getElementById("hid_id").value = elem.id;获取网页中那个隐藏的文本框.并将你点击的这一行的id写入到文本框内.该行的id属性值.正是你选取数据的id值.而且每点击一行.这个文本框里的值都会随着你点击的行而改变.而我们在提交删除的函数里正是引用的该文本框里的值.

4、del_Data();该函数的作用:把被删除的数据的ID提交给服务端请求的网页.然后根据服务端返回的一个msg标签.来判断数据是否被成功删除.老规矩我只讲以前没有涉及过的内容:
(1):点击删除按扭启用del_Data()函数.我们先找出id为msg的span标签.然后写一段操作信息.告诉你正在删除数据.
(2):获取要存放数据的表格.也就是那个id为a的tbody.判断tbody中是否有数据.如果tbody中没有任何数据.则告诉你没有数据可供选择.然后退出函数.不再往下执行.
(3):获取那个隐藏的文本框.并判断文本框是否有值.如果为空显示一段提示信息.退出函数.不再执行!如果有值存在则证明你选择了某条数据.下面的ajax会将你选择的这条数据提交给服务端网页进行删除
(4):关于ajax是如何提交和回收数据的.请参阅"ajax初试之读取数据篇"与"ajax读取数到表格".
(5):del_Data()重点是这里:判断服务端传回那个msg标签.如果该标签的内容为0,则代表服务端工作一切顺利,数据已被成功删除.
(6):数据被成功删除以后:var tr = document.getElementById(id.value);获取当前选择的行.
(7):tr.parentNode.removeChild(tr);//引用该行的父元素tbody,删除该行!
至此删除数据完成.其经过是接受服务端发回来的信号.如果删除成功,则删除前端选择的表格行.如果失败则给出提示信息!
5、add_Post();该函数与上一篇中基本一样.提交添加的数据给服务端.唯一不同的地方是:当数据被成功添加以后.我们又调用了Read();函数来读取新的数据.因为我们必须要获得新添加数据的正确id,以便我们可以正确删除!
好了,前端的代码已经讲解完了.
下面是本次ajax实例教程请求的服务端网页源码:

复制代码 代码如下:


<!--#include file="Conn.Asp"-->
<%
'出自:http://Www.WEB666.Net
'作者:康董
'如需转载请务必保留以上信息
'定义一个变量,来保存xml数据
xml="<?xml version='1.0' encoding='gb2312'?><body>"
action=Request.QueryString("action") '使用get方式接受一个action来判断客户端想要执行什么操作
Select case action
case "read" '如果为read则执行读取数据的操作
Call Read
case "add" '如果为add则执行添加数据
Call Add_Data
case "del" '如果为del则执行删除数据的操作
Call Del_Data
case else
xml = xml&"<msg>请求参数错误,请不要试图非法操作!</msg>"
End Select
xml=xml&"</body>"
Response.Clear
Response.ContentType="text/xml"
Response.CharSet="gb2312"
Response.write xml
Response.End


Sub Read '定义一个读取数据的过程
Call OpenConn '打开数据库链接
sql = "Select top 10 * From del_table order by id desc" '打开数据库中名字为del_table的表
Set Rs = Conn.Execute(Sql) '执行Sql语句,并将sql的索引赋值给rs变量

While Not Rs.Eof '如果表中有数据.则一直循环读取
xml = xml&"<list>" '每读取一条数据则创建一个list标签
xml = xml&"<id>"&Rs("id")&"</id>" 'id字段内容
xml = xml&"<content>"&Rs("content")&"</content>" 'content字段内容
xml = xml&"</list>" '每读完一条数据,就闭合list标签
Rs.MoveNext '执行下一条数据的读取
Wend '如果数据库中没有了数据.则结束循环
Close_Conn '关闭数据库链接
End Sub

Sub Add_Data '添加数据过程
On Error Resume Next '如果发生错误继续执行程序
OpenConn '打开数据库链接

str = Trim(Request.Form("str")) '接收客户端传过来的str内容
If str = "" Then
xml = xml&"<msg>3</msg>" '如果提交的内容为空.返回3
Exit Sub '退出过程
End If

Sql = "Insert Into del_table (content) values ('"&str&"')"
Conn.Execute(Sql) '执行添加数据
If Err.Number = 0 Then '判断是否有错误发生,
xml = xml&"<msg>0</msg>" '如果没有错误发生,则证明数据已经成功.返回0
Else
xml = xml&"<msg>1</msg>" '如果发生错误.则证明有错误发生.数据很可能添加失败
End If
Close_Conn
End Sub

Sub Del_Data '删除数据过程
On Error Resume Next
OpenConn
id = Request("id")
Sql = "Delete From del_table where id="&id
Conn.Execute(sql)
If Err.Number = 0 Then
xml = xml&"<msg>0</msg>"
Else
xml = xml&"<msg>1</msg>"
End If
Close_Conn
End Sub
%>

看完上述内容,你们掌握Ajax中怎么添加与删除数据的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网html频道,感谢各位的阅读!

--结束END--

本文标题: Ajax中怎么添加与删除数据

本文链接: https://www.lsjlt.com/news/77224.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Ajax中怎么添加与删除数据
    Ajax中怎么添加与删除数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码如下:<html> <head> <...
    99+
    2022-10-19
  • oracle数据库中怎么添加修改删除行
    oracle数据库中怎么添加修改删除行,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。向表中添加行:INSERT语句勇于向表中添...
    99+
    2022-10-18
  • Ajax如何删除数据与查看数据
    小编给大家分享一下Ajax如何删除数据与查看数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.数据库找一张表:颜色表2.主页...
    99+
    2022-10-19
  • css怎么添加删除线
    这篇文章主要介绍了css怎么添加删除线的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css怎么添加删除线文章都会有所收获,下面我们一起来看看吧。   text-decorat...
    99+
    2022-10-19
  • JavaScript怎么添加删除元素
    小编给大家分享一下JavaScript怎么添加删除元素,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JS添加和删除元素的方法:1、使用“appendChild(&...
    99+
    2023-06-14
  • Git中怎么添加和删除文件
    本篇内容介绍了“Git中怎么添加和删除文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!添加文件添加文件的方式非常简单,只需使用 Git 的...
    99+
    2023-07-05
  • php数组怎么添加和删除元素
    添加方法:1、array_unshift()在开头插入元素,语法“array_unshift(数组,元素列表)”;2、array_push()在末尾插入元素,语法“array_push(数组,元素)”。删除方法:1、array_shift(...
    99+
    2022-08-30
  • 怎么添加和删除php代码
    这篇文章主要介绍“怎么添加和删除php代码”,在日常操作中,相信很多人在怎么添加和删除php代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么添加和删除php代码”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-05
  • javascript怎么删除和添加元素
    这篇文章主要讲解了“javascript怎么删除和添加元素”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript怎么删除和添加元素”吧! ...
    99+
    2022-10-19
  • CentOS 7.1怎么添加删除用户
    这篇文章主要介绍了CentOS 7.1怎么添加删除用户,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。添加用户[root@wode006 home]# adduser eric...
    99+
    2023-06-10
  • git上怎么删除添加文件
    本篇内容介绍了“git上怎么删除添加文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!查看git状态在删除文件之前,我们需要先查看git状态...
    99+
    2023-07-05
  • 怎么在python中添加和删除列表
    怎么在python中添加和删除列表?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络...
    99+
    2023-06-14
  • android ListView内数据的动态添加与删除实例代码
    main.xml 文件:  代码如下: <xml version="1.0" encoding="utf-8">  <LinearLa...
    99+
    2022-06-06
    数据 listview 动态 Android
  • JavaWeb实现mysql数据库数据的添加和删除
    目录准备操作1. 配置mysql环境2. 创建Servlet Project3. 创建EMS Package4. 分别创建Servlet5. 创建addUser.html6. 配置w...
    99+
    2022-11-13
  • SQL Server数据库中怎么添加修改删除字段说明的
    SQL Server数据库中怎么添加修改删除字段说明的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  SQLServer数据...
    99+
    2022-10-18
  • MySQL5.7中MHA怎么添加或删除slave节点
    这篇文章主要讲解了“MySQL5.7中MHA怎么添加或删除slave节点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL5.7中MHA怎么添加或删除...
    99+
    2022-10-18
  • windows中怎么添加和删除静态路由
    windows中怎么添加和删除静态路由,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。windows以管理员身份打开命令行,添加一条永久静态路由PS C:\Windows\s...
    99+
    2023-06-04
  • JQuery怎么给select添加/删除节点
    这篇文章主要介绍“JQuery怎么给select添加/删除节点”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JQuery怎么给select添加/删除节点”文章能帮助大家解决问题。jQuery获取Se...
    99+
    2023-07-04
  • 使用Ajax怎么删除表格一行数据
    本篇文章给大家分享的是有关使用Ajax怎么删除表格一行数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。复制代码 代码如下: function...
    99+
    2022-10-19
  • 使用R语言怎么删除/添加数据框中的某一行/列
    这篇文章主要介绍“使用R语言怎么删除/添加数据框中的某一行/列”,在日常操作中,相信很多人在使用R语言怎么删除/添加数据框中的某一行/列问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用R语言怎么删除/添加数...
    99+
    2023-06-13
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作