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 に答える