我使用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
我通过以下代码尝试了这个:
<script type="text/javascript">
//<![CDATA[
$(function() {
// Initialiseer uploadifive
$('#file_upload').uploadifive({
'auto' : false,
'checkScript' : '/uploadifive/Sample/check-exists.php',
'onFallback' : function () {
window.location = '/home.php';
},
'method' : 'post',
'queueID' : 'queue',
'uploadScript' : '/upload/uploadifive.php',
'onUploadComplete' : function (file, data) {
console.log(data);
}
});
// Hang een click-event aan de knop
$('#subby').on('click', function () {
// Werk formData van uploadifive bij met de betreffende waarden
$('#file_upload').data('uploadifive').settings.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(),
'lid' : $('input[name=lid[]]:checked').val()
};
// Voer de upload uit
$('#file_upload').uploadifive('upload');
});
});
//]]>
</script>
目前所有数据都已发送且有效,但只有多个数字复选框才能正确发送数据。
我得到&#34;未定义&#34;在/upload/uploadifive.php
有什么问题?
答案 0 :(得分:1)
两个修复。首先,就像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;
答案 1 :(得分:0)
因为它中包含两个meta characters
。就像下面一样逃避它,
$('input[name=lid\\[\\]]:checked').val()
或
$('input[name="lid[]"]:checked').val()
请阅读here以了解有关元字符的更多信息。