簡體   English   中英

將數組發布到/通過ajax到php

[英]Posting an array to/thru ajax to php

所以我有一個從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;

});

});

您嘗試通過以下方式創建元素的“數組”: 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(); });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM