2010-07-02 116 views
0

我有一個html頁面,其中包含一個表,一些行,並在我的任何一行復選框。 當我選擇一個複選框時,我將刪除消息,但只有當我點擊一個紅色的按鈕的死亡。如何通過ajax發送動態生成的變量,使用post方法



      TR(UNIQUE_ID)
            TD [複選框]
            TD內容
            TD等內容
[...等等]
/表
[紅色按鈕的死亡]現在

,刪除多行的必須是沒有重裝所以我設置了一個像這樣工作的ajax函數:

  1. setup ajax object。
  2. 設置打開的方法(post/get,url,true)...
  3. 等待「url」頁面的響應....拿一杯咖啡,休息一下。
  4. 得到了迴應,使用jquery使用行的唯一ID刪除行。
  5. jQuery的:彈出只是做
  6. jQuery的動作反饋:更新頁面

所以,我開始試着刪除單個記錄,諸事精細周圍的一些櫃檯,我創建了一個鏈接在調用函數的每一行上刪除通過項目標識的「單個記錄」。

但現在我已經開發了多刪除的厄運。 我認爲的第一件事是「我可以用'表格'封住表格,並用'後'方法發送所有內容。 這似乎是輝煌和容易....
但無效: - |

周圍的Googling我找到了一些例子,似乎暗示設置包含該項目送......所以,試圖按照這種方式,我需要一個方法來獲得名稱/ ID /值的變量(這是不重要,我可以使用正確的ID填充屬性)選定的複選框。

這裏,使Ajax調用和所有其餘

function deleteSelected() { 
    var params = null; 
    var xmlhttp; 
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else {// code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("post", "./cv_delete_pm.php?mode=multi", true); //cancella i messaggi e ritorna l'id delle righe da cancellare 
    //Send the proper header information along with the request 
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    http.setRequestHeader("Content-length", params.length); 
    http.setRequestHeader("Connection", "close"); 

    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4) { 
      if (xmlhttp.status != 404) { 
       var local = eval("(" + xmlhttp.responseText + ")"); 
       /* 
       //cancella gli elementi specificati dalla response 
       var Node = document.getElementById(local.id); 
       Node.parentNode.removeChild(Node); 
       loadMessagesCount('{CUR_FOLDER_NAME}'); //aggiorna sidebar e totale messaggi nel body 
       initTabelleTestate(); //ricrea lo sfondo delle righe 
       $("#msgsDeleted").attr("style", "left: 600px; top: 425px; display: block;"); 
       $("#msgsDeleted").fadeIn(500); 
       $("#msgsDeleted").fadeOut(2000); 
       $("#msgsDeleted").hide(0); 
       */ 
      } 
     } 
    }; 
    xmlhttp.send(params); 
} 

其實變量「PARAM」功能設置爲null,只是因爲我在做一些試驗。

所以,問題

是:
- 是否有可能使一個Ajax請求發送表單的內容?怎麼樣?
- 是否有可能得到所有選中的html頁面的複選框的名稱/值/ id(其中之一)?怎麼樣?

回答了與解決這兩個問題,一個是足以贏得我的個人崇拜:)

回答

0

更新。解決了。我使用jquery的內置函數來使用$ jQuery.post()函數和$(#idform).serialize()函數來管理表單sumbit。這真是晚了,現在不過明天我會盡力記住這裏粘貼正確的代碼:)

感謝您的回答反正:)

更新(下面的代碼):

//Send by Post 
function deleteSelected() { 
    $.post("./delete.php?mode=multi", 
     $("#pmfolder_form").serialize(), 
     function(data){ 
      var local = eval("(" + data + ")"); 
        //this delete the html via dom to update the visual information 
      for (var i = 0; i < local.length-1; ++i) { 
       var Node = document.getElementById(local[i]); 
       Node.parentNode.removeChild(Node); 
      } 
     }); 
} 

結構的選擇框是這樣的:

<input type="checkbox" name="check_<? print $progressive_id; ?>" value="<? print $real_id; ?>"/> 

就是這樣。 :)

0

編輯:我覺得你使用JQuery這樣看這裏:http://api.jquery.com/category/ajax/

您應該使用一個javascript框架工作,如dojo或jquery來處理Ajax。不建議您從頭開始編寫自己的ajax函數。

一些框架:

jQuery的例子(你已經在使用這個框架?):

$.post("test.php", $("#testform").serialize()); 

道場實施例:

提交POST使用和Ajax的一種形式:

function postForm() { 


       var kw = { 
        url: 'mypage.php', 
        load: function(type, data, evt) { 

         dojo.byId("someElement").innerHTML=data; 



        }, 

        formNode: dojo.byId("myForm"), 
        method: "POST", 
        error: function(type, data, evt){ 
         //handle error 

        }, 
        mimetype: "text/html" 
       }; 

       dojo.io.bind(kw); 

      } 
+0

感謝您的答案:) 去檢查和研究解決方案...即將更新:) – theCrius 2010-07-02 14:41:41