【问题标题】:POST values are not being returned as expectedPOST 值未按预期返回
【发布时间】:2013-06-19 04:29:50
【问题描述】:

我有一个包含一组输入(用于收费)的表单(发票)。

<tr>
    <td><label>Description:</label></td>
    <td><input type="text name="description[]" value="'.$labor->description.'" /></td>
    <td><label>Hours:</label></td>
    <td><input type="text name="hours[]" value="'.$labor->hours.'" size="2" /></td>
    <td><label>Rate:</label></td>
    <td><input type="text name="rate[]" value="'.$labor->rate.'" size="2" /></td>
    <input type="hidden" name="labor_id[]" value="'.$labor->id.'" />
</tr>

我正在使用 javascript 函数来添加另一组这些输入。

function moreLabor(table) {

    var table = document.getElementById(table);
    var row = table.insertRow(-1);

    var descriptionLabel = document.createElement("label");
    descriptionLabel.innerHTML="Description:";
    var description = document.createElement("input");
    description.name = "description[]";
    description.type = "text";

    var td1 = row.insertCell(-1);
    var td2 = row.insertCell(-1);
    td1.appendChild(descriptionLabel);
    td2.appendChild(description);

    var hoursLabel = document.createElement("label");
    hoursLabel.innerHTML="Hours:";
    var hours = document.createElement("input");
    hours.name = "hours[]";
    hours.type = "text";
    hours.size = 2;
    hours.value = 1;
    var td1 = row.insertCell(-1);
    var td2 = row.insertCell(-1);
    td1.appendChild(hoursLabel);
    td2.appendChild(hours);

    var rateLabel = document.createElement("label");
    rateLabel.innerHTML="Rate:";
    var rate = document.createElement("input");
    rate.name = "rate[]";
    rate.type = "text";
    rate.size = 2;
    rate.value = 25;

    var td1 = row.insertCell(-1);
    var td2 = row.insertCell(-1);
    td1.appendChild(rateLabel);
    td2.appendChild(rate);

    var remove = document.createElement("input");
    remove.type = "button";
    remove.value = "Remove";
    remove.onclick = function () {
        var parent = this.parentNode.parentNode; //get the row node
        table.deleteRow(parent.rowIndex); //Delete the row index behind it.
    };
    var td1 = row.insertCell(-1).appendChild(remove);

}

如您所见,我在重复输入名称后使用 [ ]。问题是 POST 只返回每个值的最后一组。我查看了原始查询字符串,它也只包含最后一组值。费率、小时数和描述作为数组返回,但每个只设置 1 个值。如何填充整个 POST 数组?

【问题讨论】:

    标签: php javascript forms post


    【解决方案1】:

    看看你的语法,你已经结合了typename

     type="text name="hours[]"
    

    这应该是

     type="text" name="hours[]"
    

    【讨论】:

      【解决方案2】:

      伙计,我觉得自己像个白痴。当我看到带有彩色注释的问题时,我注意到 type="text

      之后缺少 "s

      【讨论】:

      • 这就是为什么推荐智能编辑器和 IDE 的原因。 . . :-)
      【解决方案3】:
      <tr>
          <td><label>Description:</label></td>
          <td><input type="text name="description[]" value="'.$labor->description.'" /></td>
          <td><label>Hours:</label></td>
          <td><input type="text name="hours[]" value="'.$labor->hours.'" size="2" /></td>
          <td><label>Rate:</label></td>
          <td><input type="text name="rate[]" value="'.$labor->rate.'" size="2" /></td>
          <input type="hidden" name="labor_id[]" value="'.$labor->id.'" />
      </tr>
      
      
      should be
      
      <tr>
          <td><label>Description:</label></td>
          <td><input type="text" name="description[]" value="'.$labor->description.'" /></td>
          <td><label>Hours:</label></td>
          <td><input type="text" name="hours[]" value="'.$labor->hours.'" size="2" /></td>
          <td><label>Rate:</label></td>
          <td><input type="text" name="rate[]" value="'.$labor->rate.'" size="2" /></td>
          <input type="hidden" name="labor_id[]" value="'.$labor->id.'" />
      </tr>
      

      【讨论】:

        猜你喜欢
        • 2020-07-06
        • 1970-01-01
        • 2012-10-05
        • 2017-03-31
        • 1970-01-01
        • 2016-08-14
        • 1970-01-01
        • 2013-09-04
        • 2016-02-13
        相关资源
        最近更新 更多