0

所以我有一个从 php 循环创建的数组,如下所示:

echo '<input type="checkbox" name="types[]" id="types[]" value="' . $id . '"> ' . $type . '<br>';

虽然它只是将它传递给 php,但我想做一些更新并将其传递给 ajax 以传递给 php,这样我就可以让 ajax 在页面上为我做一个花哨的返回。

我已经尝试了所有类型的方法来让它传递给 ajax 并传递给 php,但没有任何效果。

这是ajax代码:

jQuery(document).ready(function(){

    $('#contactform').submit(function(){

        var action = $(this).attr('action');

        $("#message").slideUp(750,function() {
        $('#message').hide();

        $('#submit')
            .after('<img src="assets/ajax-loader.gif" class="loader" />')
            .attr('disabled','disabled');



        $.post(action, {
            types['types[]']: $('#types').val(),
            form_name: $('#form_name').val(),
            site_id: $('#site_id').val()
        },
            function(data){
                document.getElementById('message').innerHTML = data;
                $('#message').slideDown('slow');
                $('#contactform img.loader').fadeOut('slow',function(){$(this).remove()});
                $('#submit').removeAttr('disabled');
                if(data.match('success') != null) $('#contactform').slideUp('slow');

            }
        );

        });

        return false;

    });

});

我试图让它也能正常工作,因为网站的其余部分使用相同的功能,我想保持这种方式。我不想在已经创建的页面上删除其他 ajax 内容。

因此,非常感谢任何见解。

谢谢

编辑/更新:

所以在设置了像 Meager 这样的线路后解释说:

echo '<input type="checkbox" name="types[]" class="types" value="' . $id . '"> ' . $type . '<br>';

并将ajax代码调整为:

    $.post(action, {
        form_name: $('#form_name').val(),
        site_id: $('#site_id').val(),
        types: $('.types').map(function(){ $(this).val(); });

    },

它似乎只是绕过了 ajax 并直接发布到我的 process.php 文件中:

Array
(
    [types] => Array
        (
            [0] => 20
            [1] => 21
            [2] => 22
        )

    [site_id] => 112
    [form_name] => prd_svc
    [Submit] => Submit
)

===========================================

jQuery(document).ready(function(){

$('#contactform').submit(function(){

    var action = $(this).attr('action');

    $("#message").slideUp(750,function() {
    $('#message').hide();

    $('#submit')
        .after('<img src="assets/ajax-loader.gif" class="loader" />')
        .attr('disabled','disabled');



    $.post(action, {
        form_name: $('#form_name').val(),
        site_id: $('#site_id').val(),
        types: $('.types').map(function(){ $(this).val(); });

    },
        function(data){
            $('#message').html(data);
            $('#message').slideDown('slow');
            $('#contactform img.loader').fadeOut('slow',function(){$(this).remove()});
            $('#submit').removeAttr('disabled');
            if(data.match('success') != null) $('#contactform').slideUp('slow');

        }
    );

    });

    return false;

});

});
4

1 回答 1

0

您尝试通过以下方式创建元素“数组”:id="types[]"是错误的。您不能以这种方式对元素进行分组,如果可以的话,这仍然不会返回值数组:$('#types').val().

您必须为每个元素分配一个唯一的 ID,或者给它们一个共享的类并通过它进行选择:

echo '<input type="checkbox" name="types[]" class="types" value="' . $id . '"> ' . $type . '<br>';

然后,要将一组选定的元素转换为它们的值,您可以使用map

// Collect all values
$('.types').map(function () { $(this).val(); });
于 2012-05-07T02:42:06.317 回答