如何通过ajax发送动态生成的变量,使用post方法
我有一个html页面,其中包含一个表,一些行,并在我的任何一行复选框。 当我选择一个复选框时,我将删除消息,但只有当我点击一个红色的按钮的死亡。如何通过ajax发送动态生成的变量,使用post方法
例
表
TR(UNIQUE_ID)
TD [复选框]
TD内容
TD等内容
[...等等]
/表
[红色按钮的死亡]现在
,删除多行的必须是没有重装所以我设置了一个像这样工作的ajax函数:
- setup ajax object。
- 设置打开的方法(post/get,url,true)...
- 等待“url”页面的响应....拿一杯咖啡,休息一下。
- 得到了回应,使用jquery使用行的唯一ID删除行。
- jQuery的:弹出只是做
- 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(其中之一)?怎么样?
回答了与解决这两个问题,一个是足以赢得我的个人崇拜:)
更新。解决了。我使用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; ?>"/>
就是这样。 :)
编辑:我觉得你使用JQuery这样看这里:http://api.jquery.com/category/ajax/
您应该使用一个javascript框架工作,如dojo或jquery来处理Ajax。不建议您从头开始编写自己的ajax函数。
一些框架:
- http://www.dojotoolkit.org/
- http://www.jquery.com/(http://api.jquery.com/category/ajax/)
- http://mootools.net/
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);
}
感谢您的答案:) 去检查和研究解决方案...即将更新:) – theCrius 2010-07-02 14:41:41