通过 jQuery ajax() 将多个复选框数据发送到 PHP

2022-08-30 16:55:32

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

The HTML:

<form method="post" action="myurl.php" id=myForm>
    <textarea id="myField" type="text" name="myField"></textarea>
    <input type="checkbox" name="myCheckboxes[]" id="myCheckboxes" value="someValue1" />
    <input type="checkbox" name="myCheckboxes[]" id="myCheckboxes" value="someValue2" />
    ...(maybe some more checkboxes - dynamically generated as necessary)
    <input id="submit" type="submit" name="submit" value="Submit" onclick="submitForm()" />
</form>

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);

一切正常:当提交表单时,新记录存储在我的数据库中,响应将ajaxed回网页,但复选框数据不会发送。我想知道选中了哪些复选框(如果有)。我已经读过关于.serialize(),JSON等,但没有一个工作。我是否必须在 jQuery 和 PHP 中序列化/JSON?如何?在发送带有复选框的表单数据时,一种方法是否比另一种方法更好?我已经卡在这件事上2天了。任何帮助将不胜感激。提前致谢!


答案 1

是的,它与jquery.serialize()一起工作得很好。

断续器

<form id="myform" class="myform" method="post" name="myform">
<textarea id="myField" type="text" name="myField"></textarea>
<input type="checkbox" name="myCheckboxes[]" id="myCheckboxes" value="someValue1" />
<input type="checkbox" name="myCheckboxes[]" id="myCheckboxes" value="someValue2" />
<input id="submit" type="submit" name="submit" value="Submit" onclick="return submitForm()" />
</form>
 <div id="myResponse"></div>

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);

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


答案 2
var myCheckboxes = new Array();
$("input:checked").each(function() {
   data['myCheckboxes[]'].push($(this).val());
});

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


推荐