使用jquery发送数组

时间:2013-12-15 12:58:01

标签: 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="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

有什么问题?

2 个答案:

答案 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以了解有关元字符的更多信息。