0

我有一个管理页面,我可以在其中动态添加和删除表行。该页面加载了数据库中的现有数据(主要包含 sku_code 和 5 个不同的价格),但是当我动态添加行并用相应的 sku 和价格填充它们时,我也想将它们保存在数据库。

问题是我在客户端使用 Javascript(动态添加表行)所做的事情innerHTML = '<input type="text">无法通过$_POST主变量访问<form>

所以基本上我是通过 Javascript 添加的,所以我可以填充它们并将它们保存在数据库中。但是 $_POST 值是空的。Javascript代码工作正常。我不知道应该从哪里开始调试。

这是我正在使用的一些 Javascript 代码

function insert_record(){

    var my_table = document.getElementById('my_table')
    var tr = my_table.insertRow(my_table.rows.length-1)
    //id-ul curent, numar toate row-urile - 1 (care este butonul OK)

    var c_id = my_table.rows.length-2

        tr.id = 'row_' + c_id + ''
    var tr_td_1 = tr.insertCell(0)
        tr_td_1.className = 'text2'
        tr_td_1.align = 'center'
        tr_td_1.innerHTML = 'SKU'
    var tr_td_2 = tr.insertCell(1)  
        tr_td_2.className = 'text3'
        tr_td_2.width = '63'
        tr_td_2.innerHTML = '<input name="sku_' + c_id + '" type="text" id="sku_' + c_id + '" size="33" value="">'

....这在包含提交按钮的最后一个表格之前添加了一个表格,之后是

4

3 回答 3

1

你应该给出 name 属性。如果您担心无限数量的字段,只需选择输入变量的数组,

像这样

<input type="text" name="field1[]">

现在您可以像这样在帖子中访问它们:

$_POST['field1']  //this is an array of fields

编辑:

首先,您应该使用像 jquery 这样的库来简化工作。

于 2012-09-04T11:21:20.097 回答
1

您需要为元素分配标签。然后你可以在下一页中抓住它。

而不是innerHTML = <input type="text">尝试使用

<script>
      function addElement(tag_type, target, parameters) {
        //Create element
        var newElement = document.createElement(tag_type);

        //Add parameters
        if (typeof parameters != 'undefined') {
          for (parameter_name in parameters) {
            newElement.setAttribute(parameter_name, parameters[parameter_name]);
          }
        }

        //Append element to target
        document.getElementById(target).appendChild(newElement);
      }
    </script>

您可以在单击甚至手动或手动调用此函数addElement('INPUT','targetTag',{id:'my_input_tag', name:'my_input_tag', type:'text', size:'5'});

于 2012-09-04T11:26:14.780 回答
0

我建议你确保你所有的字段都在里面,form并且你已经命名ajax了所有的字段,而不是像@shail建议 的那样尝试或函数。

在我看来,他们没有解决问题,只是避免它。

于 2012-09-04T11:33:42.683 回答