如何使用jQuery ajax post
传递多个复选框这是ajax函数
function submit_form(){
$.post("ajax.php", {
selectedcheckboxes:user_ids,
confirm:"true"
},
function(data){
$("#lightbox").html(data);
});
}
这是我的表格
<form>
<input type='checkbox' name='user_ids[]' value='1'id='checkbox_1' />
<input type='checkbox' name='user_ids[]' value='2'id='checkbox_2' />
<input type='checkbox' name='user_ids[]' value='3'id='checkbox_3' />
<input name="confirm" type="button" value="confirm" onclick="submit_form();" />
</form>
答案 0 :(得分:47)
从POST(3rd example)的jquery文档:
$.post("test.php", { 'choices[]': ["Jon", "Susan"] });
所以我只是遍历选中的框并构建数组。像
这样的东西var data = { 'user_ids[]' : []};
$(":checked").each(function() {
data['user_ids[]'].push($(this).val());
});
$.post("ajax.php", data);
答案 1 :(得分:16)
刚刚遇到这个尝试找到同一问题的解决方案。实现Paul的解决方案我做了一些调整以使这个功能正常。
var data = { 'venue[]' : []};
$("input:checked").each(function() {
data['venue[]'].push($(this).val());
});
简而言之,添加了输入:checked而不是:checked将输入到数组中的字段限制为仅在表单上的复选框。保罗确实是正确的,this
需要被$(this)
答案 2 :(得分:10)
可以使用以下内容然后展开帖子结果explode(",", $_POST['data']);
以提供一系列结果。
var data = new Array();
$("input[name='checkBoxesName']:checked").each(function(i) {
data.push($(this).val());
});
答案 3 :(得分:5)
这是一种更灵活的方式。
让我们说这是你的表格。
<form>
<input type='checkbox' name='user_ids[]' value='1'id='checkbox_1' />
<input type='checkbox' name='user_ids[]' value='2'id='checkbox_2' />
<input type='checkbox' name='user_ids[]' value='3'id='checkbox_3' />
<input name="confirm" type="button" value="confirm" onclick="submit_form();" />
</form>
这是你下面的jquery ajax ......
// Don't get confused at this portion right here
// cuz "var data" will get all the values that the form
// has submitted in the $_POST. It doesn't matter if you
// try to pass a text or password or select form element.
// Remember that the "form" is not a name attribute
// of the form, but the "form element" itself that submitted
// the current post method
var data = $("form").serialize();
$.ajax({
url: "link/of/your/ajax.php", // link of your "whatever" php
type: "POST",
async: true,
cache: false,
data: data, // all data will be passed here
success: function(data){
alert(data) // The data that is echoed from the ajax.php
}
});
在你的ajax.php中,你试着回复或print_r你的帖子,看看里面发生了什么。这应该是这样的。仅返回您选中的复选框。如果您没有选中任何内容,则会返回错误。
<?php
print_r($_POST); // this will be echoed back to you upon success.
echo "This one too, will be echoed back to you";
希望足够清楚。
答案 4 :(得分:2)
如果您没有开始推出自己的解决方案,请查看此jQuery插件:
malsup.com/jquery/form /
它会为你做更多的事情。强烈推荐。
答案 5 :(得分:1)
这会更好更容易
var arr = $('input[name="user_ids[]"]').map(function(){
return $(this).val();
}).get();
console.log(arr);
答案 6 :(得分:1)
Paul Tarjan的以下人员为我工作,
var data = { 'user_ids[]' : []};
$(":checked").each(function() {
data['user_ids[]'].push($(this).val());
});
$.post("ajax.php", data);
但是我的页面上有多个表单,它从所有表单中提取了复选框,所以我做了以下修改,所以它只从一个表单中提取,
var data = { 'user_ids[]' : []};
$('#name_of_your_form input[name="user_ids[]"]:checked').each(function() {
data['user_ids[]'].push($(this).val());
});
$.post("ajax.php", data);
只需将 name_of_your_form 更改为表单名称即可。
我还要提到,如果用户没有检查任何框,则PHP中没有设置数组。我需要知道用户是否取消选中所有框,因此我将以下内容添加到表单中,
<input style="display:none;" type="checkbox" name="user_ids[]" value="none" checked="checked"></input>
这样,如果没有选中框,它仍会将数组设置为&#34; none&#34;。