Javascript 使用jquery发送数组

Javascript 使用jquery发送数组,javascript,php,jquery,Javascript,Php,Jquery,我使用Uploadifive并修改了一些东西 我制作了一个表单,人们可以选择和输入值,也可以允许人们 要选择多个数字,如下所示: <input type="checkbox" id="checker_tiny" name="lid[]" value="1" /> <input type="checkbox" id="checker_tiny" name="lid[]" value="2" /> <input type="checkbox" id="checke

我使用Uploadifive并修改了一些东西

我制作了一个表单,人们可以选择和输入值,也可以允许人们 要选择多个数字,如下所示:

 <input type="checkbox" id="checker_tiny" name="lid[]" value="1" />
 <input type="checkbox" id="checker_tiny" name="lid[]" value="2" />
 <input type="checkbox" id="checker_tiny" name="lid[]" value="3" />
 <input type="checkbox" id="checker_tiny" name="lid[]" value="4" />
 <input type="checkbox" id="checker_tiny" name="lid[]" value="5" />
目前,所有数据都在发送中,并且可以正常工作,但只有多个数字复选框不能正确发送数据

我在
/upload/uploadifive.php


怎么了?

因为它包含两个
元字符。就像下面那样逃离它

$('input[name=lid\\[\\]]:checked').val()


请阅读以了解有关元字符的更多信息。

两个修复程序。首先,正如Rajaprabhu Aravindasam的回答一样,您需要对名称中的特殊字符进行转义。其次,您需要迭代所有
lid[]
元素,并将它们分别添加到
formData
对象中

var formData = {
    'timestamp'   : '<?php echo $timestamp;?>',
    'token'       : '<?php echo md5('unique_salt' . $timestamp);?>',
    'projectnr'   : $('input[name=projectnr]').val(),
    'gebruiker'   : $('input[name=gebruiker]').val(),
    'gebruikerid' : $('input[name=userId]').val(),
    'mapId'       : $( "#mapId option:selected" ).val(), // moet dit niet val() zijn???
    'uploadbash'  : '<?php echo $uploadbash; ?>',
    'upload_reden' : $( "#upload_reden option:selected" ).val(),
    'todo'        : $("input[name=todo]:checked").val(),
};
$('input[name="lid[]"]:checked').each(function(i) {
    formData['lid['+i+']'] = $(this).val();
});
$('#file_upload').data('uploadifive').settings.formData = formData;
var formData={
“时间戳”:“,
“令牌”:“,
'projectnr':$('input[name=projectnr]')。val(),
'gebruiker':$('input[name=gebruiker]')。val(),
'gebruikerid':$('input[name=userId]')。val(),
'mapId':$(“#mapId选项:选中”).val(),//moet dit niet val()zijn???
“uploadbash”:“,
'上传更新':$(“#上传更新选项:选中”).val(),
“todo”:$(“输入[名称=todo]:已选中”).val(),
};
$('input[name=“lid[]”:checked')。每个(函数(i){
formData['lid['+i+']']=$(this.val();
});
$('#file_upload').data('uploadifive').settings.formData=formData;

谢谢,这是可行的,但当我检查两个数字时,我得到了这个结果:lid%5B%5D=13647&lid%5B%5D=13649这是正确的数字,但我希望它们返回为:13647,13649,用逗号分隔,没有其他东西。这可能吗?我担心会发生
serialize()
使用URL编码,这适用于URL查询参数和
x-www-form-urlencoded
POST数据。但是
FormData
multipart/FormData
,这需要将每个数组元素放入不同的参数中,而不是像这样组合。现在,我用PHP中的str_replace修复了这个问题。所以谢谢你的帮助!我用一些我认为会自动工作的东西更新了答案。另一个解决方案是
加入Javascript中的所有复选框值,并在PHP中分解它们。旁注:使用相同id的多个元素是不好的做法。这将在将来给您带来问题。
$('input[name="lid[]"]:checked').val()
var formData = {
    'timestamp'   : '<?php echo $timestamp;?>',
    'token'       : '<?php echo md5('unique_salt' . $timestamp);?>',
    'projectnr'   : $('input[name=projectnr]').val(),
    'gebruiker'   : $('input[name=gebruiker]').val(),
    'gebruikerid' : $('input[name=userId]').val(),
    'mapId'       : $( "#mapId option:selected" ).val(), // moet dit niet val() zijn???
    'uploadbash'  : '<?php echo $uploadbash; ?>',
    'upload_reden' : $( "#upload_reden option:selected" ).val(),
    'todo'        : $("input[name=todo]:checked").val(),
};
$('input[name="lid[]"]:checked').each(function(i) {
    formData['lid['+i+']'] = $(this).val();
});
$('#file_upload').data('uploadifive').settings.formData = formData;