利用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=/"刪除/" οnclick=/"info_check(1,"+document.getElementById("hidden").value+")/"/>";
 new_row.insertCell(6).innerHTML="<a href='#' οnclick=/"info_update_input(2,"+document.getElementById("hidden").value+")/">修改</a>";
 //new_row.innerHTML="<td>df</td>";
 }

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章