Javascript 使用jquery发送数组
我使用Uploadifive并修改了一些东西 我制作了一个表单,人们可以选择和输入值,也可以允许人们 要选择多个数字,如下所示: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
<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;