Ajax 데이터 추가 및 편 삭제 구현 코드

만약 당신 이 정말 앞의 몇 편 을 파악 했다 면,ajax 삭제 기능 을 실현 하 는 것 은 이상 할 것 입 니 다.제 가 가르쳐 드 리 고 싶 은 것 은,자바 스 크 립 트 와 Dom 을 유연 하 게 이용 하여 멋 진 삭제 효 과 를 실현 하 는 것 입 니 다.사실 여기까지 배 웠 습 니 다.ajax 기술 에서 요 청 된 서버 페이지 는,비 ajax 응용 프로그램 에 서 는 큰 차이 가 없습니다.전단 에서 보 내 온 요청 을 받 아들 일 뿐 입 니 다.배경 에서 작업 을 수행 할 뿐 입 니 다!이 튜 토리 얼 을 다 배 운 후에 멋 진 ajax 효 과 를 실현 하려 면 자 바스 크 립 트 Dom 이라는 기술 에 정통 해 야 한 다 는 것 을 알 게 될 것 입 니 다.방금 제 가 술 을 많이 마 셨 습 니 다.위의 이 말 은 제 가 이틀 전에 쓴 것 입 니 다.저 는 그냥 자고 싶 었 습 니 다.하지만 제 가 술 을 마신 후에...나 는 더 잘 말 할 수 있다.사실 나 는 내 가 술 에 취해 혼 란 스 러 울 때 나의 지식 을 너 에 게 더 잘 전수 할 수 있다 고 생각한다.오늘 의 추가 효 과 는 전편 의 추가 데이터 와 같다.그러나 오늘 의 삭제 효 과 는 아마 네가 본 적 이 없 는 것 일 것 이다.그 데 이 터 를 삭제 하려 면 그 를 누 르 십시오.그리고 삭제 버튼 을 누 르 십시오.이것 은 데스크 톱 응용 프로그램 과 다 를 바 없습니다.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" style="color:red"></span>
<table border="1"><!-- -->
<tbody id="a"></tbody>
</table>
<span style="color:red"> : . !</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 클릭 이벤트.delData()함수.서비스 에 삭제 명령 을 보 내 면 script 스 크 립 트 부분 에 들 어 갑 니 다.script 에는 5 개의 사용자 정의 함수 가 있 습 니 다.각각 ajax 입 니 다.xmlhttp(),Read(),add_Event(),del_Data(),add_Post().함수 의 역할 을 일일이 설명 하 겠 습 니 다.1.ajaxxmlhttp();사용 가능 한 XML HTTPRequest 대상 을 만 듭 니 다.XML HTTPRequest 가 무엇 인지 모 르 신다 면:XML HTTPRequest 2,read()를 참조 하 십시오.데이터 함 수 를 읽 습 니 다.앞의 몇 편의 튜 토리 얼 에서 ajax 가 데 이 터 를 읽 는 것 에 대해 이야기 한 적 이 있 습 니 다.저 는 오늘 읽 는 과정 에서 의 중점 만 말씀 드 리 겠 습 니 다.먼저 서버 웹 페이지 가 출력 한 xml.add 를 보 겠 습 니 다.del_data.asp?action=read.서버 에서 전 송 된 xml 데이터 에서 모든 list 탭 을 가 져 온 후,getElement ById 방법 으로 데 이 터 를 저장 하 는 표를 가 져 왔 습 니 다.그 다음 에 이 list 탭 을 반복 해서 옮 겨 다 녔 습 니 다.각각 list 는 하나의 데 이 터 를 대표 합 니 다.각 list 에는 2 개의 키 요소 가 포함 되 어 있 습 니 다.첫 번 째 키 요 소 는 이 데이터 의 id 값 을 저장 하고 있 습 니 다.두 번 째 키 요 소 는 이 데이터 의 텍스트 내용 을 저장 하고 있 습 니 다.자,read()함수 에서 for 순환 의 문 구 를 살 펴 보 겠 습 니 다.(1):var tr=t.insertRow(t.rows.length);목록 을 순환 할 때마다 표 에 줄 을 추가 합 니 다.표 의 줄 마다 데 이 터 를 표시 하고 이 줄 에 대한 인용 을 되 돌려 줍 니 다.(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){addEvent(e)};이 어 새로 추 가 된 줄 에 사용자 정의 함 수 를 연결 합 니 다.함수 의 이름 은 add 입 니 다.Event(); (4):var td.tr.insertCell(0);새로운 열 을 추가 하고 이 열 에 대한 인용 을 되 돌려 줍 니 다.(5):td.innerHTML=list[i].childNodes[1].firstChild.nodeValue;이 열 에 i 번 째 list 의 두 번 째 키 요소 의 텍스트 내용 을 기록 합 니 다.즉,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.표준 화 된 트리거 이벤트 의 요소 입 니 다.그 요소 가 이 사건 을 촉발 시 켰 습 니 다.여기 서 는 표 에 있 는 줄 을 클릭 하 였 습 니 다.하지만 사실은 TR 이 아 닌 TD 를 찾 았 습 니 다.이것 은 전설의 이벤트 캡 처 와 거품 때 문 일 것 입 니 다.괜 찮 습 니 다.tagName 을 사용 하여 TD 라면 판단 하 겠 습 니 다.이 TD 의 부모 요 소 를 가 져 옵 니 다.이 제 는 TR 이 겠 죠.하하.(3):var table=elem.parent Node;TR 의 부모 요 소 를 가 져 옵 니 다.바로 그 tbody 입 니 다.tbody 에 대한 인용 을 되 돌려 줍 니 다.(4):tbody 의 모든 줄 을 for 로 반복 합 니 다.줄 마다 배경 색 을 비 웁 니 다.(5):elem.style.background="\#999000";순환 이 끝 난 후 이 줄 에 배경 색 을 추가 합 니 다.(6):document.getElement ById("hidid").value = elem.id;웹 페이지 에 숨겨 진 텍스트 상 자 를 가 져 옵 니 다.클릭 한 줄 의 id 를 텍스트 상자 에 기록 합 니 다.이 줄 의 id 속성 값 입 니 다.바로 데 이 터 를 선택 한 id 값 입 니 다.또한 한 줄 을 클릭 할 때마다 이 텍스트 상자 의 값 은 클릭 한 줄 에 따라 달라 집 니 다.삭 제 를 제출 하 는 함수 에 서 는 이 텍스트 상자 의 값 을 참조 합 니 다.4,delData();이 함수 의 역할:삭 제 된 데이터 의 ID 를 서버 에서 요청 한 웹 페이지 에 제출 합 니 다.그리고 서버 에서 되 돌아 오 는 msg 탭 에 따라 데이터 가 성공 적 으로 삭제 되 었 는 지 여 부 를 판단 합 니 다.오래된 규칙 은 이전에 언급 되 지 않 았 던 내용 만 말 합 니 다.(1)삭제 버튼 을 누 르 면 del 을 사용 합 니 다.data()함수 입 니 다.id 가 msg 인 span 탭 을 찾 은 다음 동작 정 보 를 작성 합 니 다.데 이 터 를 삭제 하고 있 음 을 알려 드 립 니 다.(2):데 이 터 를 저장 할 표를 가 져 옵 니 다.즉,그 id 가 a 인 tbody 입 니 다.tbody 에 데이터 가 있 는 지 판단 합 니 다.tbody 에 데이터 가 없 으 면 선택 할 데이터 가 없다 는 것 을 알려 드 립 니 다.그리고 함 수 를 종료 합 니 다.더 이상 실행 하지 않 습 니 다.(3)):숨겨 진 텍스트 상 자 를 가 져 옵 니 다.텍스트 상자 에 값 이 있 는 지 판단 합 니 다.빈 곳 에 알림 정 보 를 표시 하려 면 함 수 를 종료 하 십시오.더 이상 실행 하지 않 습 니 다!값 이 존재 하면 데 이 터 를 선 택 했 음 을 증명 합 니 다.아래 ajax 는 선택 한 데 이 터 를 서버 웹 페이지 에 제출 하여 삭제 합 니 다(4):ajax 가 데 이 터 를 어떻게 제출 하고 회수 하 는 지 에 대해 서 는"ajax 초기 읽 기 데이터 편"과"ajax 읽 기 표 칸"을 참조 하 십시오.(5):delData()의 중점 은 여기 입 니 다.서버 에서 msg 탭 을 전송 하 는 것 을 판단 합 니 다.이 탭 의 내용 이 0 이면 서버 작업 이 잘 되 고 데이터 가 성공 적 으로 삭제 되 었 음 을 의미 합 니 다.(6):데이터 가 성공 적 으로 삭 제 된 후:var tr=document.getElement ById(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
%>
제 가 서버 에서 사용 하 는 것 은 Asp 출력 xml 형식 데이터 기술 입 니 다.저 는 앞의 몇 편 에서 설명 을 했 습 니 다.phop,.net,JSp 를 사용 하여 쉽게 모 의 할 수 있 습 니 다.(!-\#include file="Conn.asp"-)는 제 데이터베이스 링크 파일 입 니 다.안전 을 위해 데이터베이스 이름 을 밝 히 지 않 습 니 다.이번에 읽 은 표 이름 은:del 입 니 다.table 필드 는 ID 입 니 다.Content 는 오늘 여기까지 입 니 다.모 르 는 부분 이 있 습 니까?ajax 기술 교류 군:110167482 다음 편 은 ajax 가 데 이 터 를 읽 는 페이지 표시 편 입 니 다.

좋은 웹페이지 즐겨찾기