0

ユーザーが行を追加または削除できるようにするhtmlテーブルを含むフォームがあります。それはうまくいきます。

/*add row*/
function add_Items(itemtypeid, itemid, reqqty) {
    var mode = 1;
    var pstSettings = {
        url: 'ajax_Items/' + itemid + '/' + mode
        callback: function (data) {
            var dyntd = "";
            var hidval = "";
            var $response = $(data);
            var resitmname = $response.filter('#Item_Name').text();
            var resitmdesc = $response.filter('#Item_Descrip').text();
            dyntd = "<td><label>" + itemid + "</label></td>";
            dyntd += "<td><label>" + resitmname + "</label></td>";
            dyntd += "<td><label>" + resitmdesc + "</label></td>";
            dyntd += "<td><label>" + reqqty + "</label></td>";
            hidval += '<input type="hidden" name="itemid"  value=' + itemid + ' />';
            hidval += '<input type="hidden" name="reqitem"  value=' + reqqty + ' />';
            dyntd += '<td>' + hidval + '<input type="button" name="min" class="minus" value="-" />';

            $('.item-result-table tr:last').after('<tr>' + dyntd + '</tr>');
        }
    };
    post_Call(pstSettings);
}
}

/* delete row */
$(document).ready(function () {
    $('.item-result-table').delegate('.minus', 'click', function (e) {
        $(this).parent().parent().remove();
    });
});

しかし、今私の問題は、フォームで html テーブルを送信する方法です。非表示のタグを追加しました。ただし、最初の要素のみを取得し、他の要素は無視されるという問題も発生します。このhtmlテーブルデータを送信する他の方法はありますか?

4

2 に答える 2

1

入力が 1 つしかない理由は、間違って定義したためです。配列として定義する必要があります。

<input type="hidden" name="itemid[]"  value=' + itemid + ' />
<input type="hidden" name="reqitem[]"  value=' + reqqty + ' />'

次にPHPで:

$_POST['itemid'][0]; 
于 2013-04-14T10:18:53.420 に答える
0

$.ajaxjquery関数を使用できると思います。次のようなフォームですべての入力をシリアル化できます。

$("#btn_submit").on('click', function() {
    $.ajax({
        url: $(this).closest("#div_content").find("#form").attr( 'action' ),
        type: 'post',
        data: $(this).closest("#div_content").find("#form").serialize(),
    }).done( function(msg) {
        //console.log("ok");
    }).fail( function(jqXHR, textStatus) {
        //console.log("fail");
    }); 
});

「シリアル化」を使用すると、すべての変数を送信でき、コントローラーで変数と$_POST入力の名前を読み取ることができます。

于 2013-04-14T10:19:58.340 に答える