如何在表单提交时发布动态生成的html表?

时间:2013-04-14 10:05:51

标签: php jquery codeigniter

我有一个包含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标签都不是输入类型标签。我添加了一个隐藏的标签。但它也会产生问题,它只需要第一个元素,其他元素被忽略。是否存在提交此html表数据的任何其他方法?

2 个答案:

答案 0 :(得分:1)

你只获得一个输入的原因是因为你定义错了,你需要将它定义为数组:

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

然后在PHP中:

$_POST['itemid'][0]; 

答案 1 :(得分:0)

我认为您可以使用$.ajax jquery函数。您可以在表单中序列化所有输入:

$("#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和输入名称读取变量。