1. 程式人生 > >利用Ajax對客戶端頁面的動態增刪改查

利用Ajax對客戶端頁面的動態增刪改查

前兩天在做一個網站的後臺,我做成員管理一塊,發現我負責的這一塊有很大的發揮空間,在web2.0時代客戶的體驗已經被提為最重要的議程,因此網頁的流暢度將是網頁能夠給人帶來快捷體驗的一個有效途徑,利用Ajax實現對資料的增刪改查,效果很好....

在客戶端指令碼在winload時間新增函式初始化xmlHTTP:

function ajaxFunction()
 {

 
 try
    {
   // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
 catch (e)
    {

  // Internet Explorer
   try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
   catch (e)
      {

      try
         {
         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
      catch (e)
         {
         alert("您的瀏覽器不支援AJAX!");
         return false;
         }
      }
    }
 xmlHttp.onreadystatechange=function(){
  if(xmlHttp.readyState==4)
  {
   back_check();
  }
  
 }
 }

這樣就可以保證在每次使用xmlHTTP時都有物件可用(就是這個意思~~~可能有點亂)然後在每次使用完xmlHTTP之後都呼叫一次Ajaxfunction就可以了呵呵.

在表格控制方面,利用dom物件對錶格的處理.在單擊修改按鈕時,呼叫一下函式,並彈出隱藏的層,將資料載入到層中:

function info_update_input(index,id)
{
 state=0;
 //彈出隱藏的層
  document.getElementById("middle").style.display="block";
  document.getElementById("info_add").style.display="block";
  document.getElementById("info_add").style.left="30";
  document.getElementById("info_add").style.top="50";
  document.getElementById("hidden").value=id;//使資料的id新增到層的隱藏域中,以便以後使用...
  for(var i=0;i<=3;i++)//將表格中的資料載入到層中
 {
   
   
    document.getElementById("input_"+i).value=document.getElementById("tb_"+id).cells[i+1].innerHTML;
 }
 }

單擊層中的確定按鈕後一下函式被呼叫,資料被返回到伺服器,對資料進行修改:

function info_add_post(index,id)
{
 if(state==0)
 {
  alert(state);
  index=2;
  id=document.getElementById("hidden").value;
 }
 var str="test.php?index="+index+"&id="+id;
 for(var i=0;i<=3;i++)
 {
   
    str+="&d_"+i+"="+document.getElementById("input_"+i).value;
    info[i]=document.getElementById("input_"+i).value;
 }
 alert(str);
 xmlHttp.open("GET",str);
 xmlHttp.send(null);
 }
 function end_add()
 {
  document.getElementById("middle").style.display="none";
  document.getElementById("info_add").style.display="none";
  document.getElementById("mem_manager").insertRow(document.getElementById("mem_manager").rows.length).innerHTML="<td>hang</td>";
  }

伺服器處理完後,返回處理的id值(由於這是我的原始碼扒下來的呵呵,所以還有操作索引值.index,以確定是增刪改查的那一項)

function back_check()
{
 
 var reStr=xmlHttp.responseText;
 //document.write(reStr);
 var index=reStr.charAt(0);
 alert(reStr);
 if(index=="1")
 {
 document.getElementById("mem_manager").deleteRow(document.getElementById("tb_"+document.getElementById("hidden").value).rowIndex);
  }
   else if(index=="2")
   {
  
 info_update();
 //alert(document.getElementById("tb_"+reStr.charAt(2)).cells[0].innerHTML);
 }
 
 else if(index=="3")
 {
  end_add();
  }
 
 ajaxFunction();
 }
function info_update()
{
 document.getElementById("middle").style.display="none";
 document.getElementById("info_add").style.display="none";
 document.getElementById("mem_manager").deleteRow(document.getElementById("tb_"+document.getElementById("hidden").value).rowIndex);
 //document.getElementById("mem_manager").rows[2].innerHTML="sdfsdfsdfsdf";
 //alert(document.getElementById("mem_manager").rows[2].innerHTML);
 var new_row=document.getElementById("mem_manager").insertRow(document.getElementById("mem_manager").rows.length-1);
 //new_row.style.height="10px";
 //new_row.innerHTML="<td><input type='text' size=5 maxlength=5 /></td>";
 new_row.id="tb_"+document.getElementById("hidden").value;
 new_row.style.backgroundColor="#D7EBFF";
 new_row.insertCell(0).innerHTML="<input type='checkbox'/>";
 for(var i=1;i<5;i++)
 {
  new_row.insertCell(i).innerHTML=info[i-1];
  }
 new_row.insertCell(5).innerHTML="<input type=/"button/" value=/"刪除/" onclick=/"info_check(1,"+document.getElementById("hidden").value+")/"/>";
 new_row.insertCell(6).innerHTML="<a href='#' onclick=/"info_update_input(2,"+document.getElementById("hidden").value+")/">修改</a>";
 //new_row.innerHTML="<td>df</td>";
 }

這樣整個修改過程就算結束啦,由於是我臨時寫的,而且我水平並不高,所以程式碼看著有點亂,希望能對用的找的朋友一些啟發.想要原始碼可以留言我發給你呵呵~~~