2010-07-02 42 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