ajax php多选复选,通过jQuery ajax()向PHP发送多个复选框数据

博主遇到一个问题,在使用jQuery的AJAX提交POST表单时,textarea数据能正常发送到PHP,但复选框的值无法传递。他们尝试了多种方法,包括使用.serialize()和手动构建数据数组,但复选框数据始终未在PHP端接收到。在讨论中,有人建议使用.serialize()方法,并提供了相应代码示例,最终解决了问题。
摘要由CSDN通过智能技术生成

我想通过jQuery的.ajax()在我的网站上提交一个POST表单,其中包含textarea字段和一个输入字段(type ="checkbox",其中包含任意/可变数量的复选框)。 PHP接收textarea数据,并向用户正确显示ajax响应。但是,似乎PHP没有收到复选框数据(是否已选中)。我怎样才能让它发挥作用?这是我的代码:

HTML:

...(maybe some more checkboxes - dynamically generated as necessary)

jQuery:

function submitForm() {

$(document).ready(function() {

$("form#myForm").submit(function() {

var myCheckboxes = new Array();

$("input:checked").each(function() {

myCheckboxes.push($(this).val());

});

$.ajax({

type:"POST",

url:"myurl.php",

dataType: 'html',

data: { myField:$("textarea[name=myField]").val(),

myCheckboxes:myCheckboxes },

success: function(data){

$('#myResponse').html(data)

}

});

return false;

});

});

现在,PHP

$myField = htmlspecialchars( $_POST['myField'] ) );

if( isset( $_POST['myCheckboxes'] ) )

{

for ( $i=0; $i < count( $_POST['myCheckboxes'] ); $i++ )

{

// do some stuff, save to database, etc.

}

}

// create the response

$response = 'an HTML response';

$response = stripslashes($response);

echo($response);

一切都很好:当提交表单时,我的数据库中存储了一条新记录,响应被回复到网页,但不会发送复选框数据。我想知道哪些复选框已被选中(如果有的话)。我读过.serialize(),JSON等,但没有一个有用。我是否必须在jQuery和PHP中序列化/ JSON?怎么样?使用复选框发送表单数据时,有一种方法比另一种更好吗?我已经坚持了2天。任何帮助将不胜感激。提前谢谢!

你不必担心表单元素试试这个stackoverflow.com/questions/19029703/

是的,它与jquery.serialize()非常相似

HTML

JQuery的

function submitForm() {

var form = document.myform;

var dataString = $(form).serialize();

$.ajax({

type:'POST',

url:'myurl.php',

data: dataString,

success: function(data){

$('#myResponse').html(data);

}

});

return false;

}

现在PHP,我导出POST数据

echo var_export($_POST);

你可以看到发送的所有复选框值。我希望它可以帮助你

让我知道它是否有效。

谢谢你的建议。 我得到了它的工作!

感谢@WinnMinnSoe让我发现.serialize方法!=)

谢谢@WinnMinnSoe。 非常,非常整洁!

var myCheckboxes = new Array();

$("input:checked").each(function() {

data['myCheckboxes[]'].push($(this).val());

});

您正在将复选框推送到错误的数组data['myCheckboxes[]']而不是myCheckboxes.push

谢谢。 我改变了,但我仍然没有收到PHP端的数据。 我已经尝试了几种不同的方法来处理jQuery的复选框(我在这个网站上找到了大部分的想法),但它们都没有用。 我的代码创建了一个mySQL数据库记录,但复选框字段始终为空,即使我在发送的表单中最多检查8个不同的复选框。

未捕获的ReferenceError:未定义数据

@Andy myCheckboxes.push($(this).val());

myCheckboxes = data['myCheckboxes[]'].push($(this).val());是最后一步

看一下这个。

function submitForm() {

$(document).ready(function() {

$("form#myForm").submit(function() {

var myCheckboxes = new Array();

$("input:checked").each(function() {

myCheckboxes.push($(this).val());

});

$.ajax({

type:"POST",

url:"myurl.php",

dataType: 'html',

data: 'myField='+$("textarea[name=myField]").val()+'&myCheckboxes='+myCheckboxes,

success: function(data){

$('#myResponse').html(data)

}

});

return false;

});

});

}

在myurl.php上你可以使用print_r($_POST['myCheckboxes']);

$.post("test.php", { 'choices[]': ["Jon","Susan"] });

所以我只是遍历选中的框并构建数组。 就像是。

var data = { 'user_ids[]' : []};

$(":checked").each(function() {

data['user_ids[]'].push($(this).val());

});

$.post("ajax.php", data);

你也可以试试这个,

var arr = $('input[name="myCheckboxes[]"]').map(function(){

return $(this).val();

}).get();

console.log(arr);

你现在的代码似乎没问题。 使用此选项检查复选框数组包含的内容。 在php脚本的顶部添加此代码,看看是否将复选框传递给您的脚本。

echo '[cc lang="php"]'.print_r($_POST['myCheckboxes'], true).'

';

出口;

代码> PRE>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值