读取PHP中的序列化jquery数据(多个复选框)

时间:2012-01-06 08:09:10

标签: php jquery ajax

JQUERY:

$(document).ready(function(){
    $('form').submit(function(){
        var content = $(this).serialize();
        //alert(content);
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: 'http://localhost/test/generate',
            timeout: 15000,
            data:{  content: content },
            success: function(data){
                $('.box').html(data).fadeIn(1000);
            },
            error: function(){
                $('.box').html('error').fadeIn(1000);
            }
        });
        return false;
    });
});

HTML:

<form>
<input type="checkbox" value="first" name="opts[]">
<input type="checkbox" value="second" name="opts[]">
<input type="checkbox" value="third" name="opts[]">
<input type="submit">
</form>

如何在PHP中处理(或读取)多个已选中复选框的值?我尝试使用$_POST['content']来获取序列化数据,但没有运气。

4 个答案:

答案 0 :(得分:5)

替换:

data:{  content: content } // <!-- you are prefixing with content which is wrong

使用:

data: content

现在,在PHP脚本中,您可以使用通常应该返回数组的$_POST['opts']

答案 1 :(得分:1)

尝试

echo $_POST['opts'][0]. "<br />";
echo $_POST['opts'][1]. "<br />";
echo $_POST['opts'][2]. "<br />";

您将数组发布到服务器,并且它在post变量'opts'中可用。请记住:未经检查的框不会被发布。

答案 2 :(得分:0)

选择的答案对我来说仍然不起作用,但这是做了什么:

var checkedBoxesArr = new Array();
$("input[name='checkedBoxes']:checked").each(function() {
    checkedBoxesArr.push($(this).val());
});
var checkedBoxesStr = checkedBoxesArr.toString(); 
var dataString = $("#" + formID).serialize() + 
                  '&checkedBoxesStr=' + checkedBoxesStr;

[以上代码在您的javascript中进行,然后序列化表单数据]
首先,循环选中复选框并将它们放入数组中。
接下来,将数组转换为字符串 最后,手动将它们附加到序列化表单数据 - 这样您就可以引用PHP中的字符串以及其余的序列化数据。

这个答案部分来自这篇文章:Send multiple checkbox data to PHP via jQuery ajax()

答案 3 :(得分:-2)

您的代码中存在错误:

  1. 网址应为url: 'http://localhost/test/generate.php',扩展名为