通过AJAX添加的表单字段无法加载到$ _POST数组中

时间:2011-02-23 18:22:43

标签: ajax dom forms jquery

我有一个简单明了的HTML表单,允许人们订购一些小册子。表单首先加载一些看起来像这样的东西:

<script type="text/javascript">
  var tableRowN = 1;
</script> 

<form id="Order" name="Order" method="post" action="includes/orderCheck.php">
    <input id="name" type="text" name="name" width="100" />
    <table id="orderingTable">
      <tr class="lastRow">
        <td><div id="itemGroupdiv1">
            <input type="text" class="disabled" name="itemGroup1" id="itemGroup1" />
          </div></td>
        <td><div id="itemCodediv1">
            <input type="text" name="itemCode1" id="itemCode1" class="disabled" />
          </div></td>
        <td><div id="itemCodeVersiondiv1">
            <input type="text" class="disabledSmall" id="itemcodeversion1" name="itemcodeversion1" />
          </div></td>
      </tr>
    </table>
    <input type="submit" name="submit" id="submit"/>
  </form>

然后,当用户想要向表中添加新行时,他可以单击一个按钮,该按钮触发以下javascript函数以通过AJAX获取新表代码并插入。

function createItemLine() {
tableRowN++;    
$('tr.lastRow').attr('class', '');
    $('#orderingTable').append('<tr class="lastRow"></tr>');
    $.ajax({
      url: "/orderingTable.php?rNumber=" + tableRowN,
      cache: false,
      success: function(html){
        $("tr.lastRow").append(html);
        alert('loaded');
      }
    }); 
}

AJAX函数然后运行到PHP脚本,该脚本创建下一行,将ID和名称等滚动到数字+1。

<td><div id="itemGroupdiv2">
<input type="text" class="disabled" name="itemGroup2" id="itemGroup2" />
</div></td>
<td><div id="itemCodediv2">
<input type="text" name="itemCode2" id="itemCode2" class="disabled" />
</div></td>
<td><div id="itemCodeVersiondiv2">
<input type="text" class="disabledSmall" id="itemcodeversion2" name="itemcodeversion2" />
</div></td>

到目前为止,没有什么令人惊讶的?应该都很直接......

问题在于,当我添加新行(在Firefox和Chrome中)时,表单提交过程会完全忽略新行,并且它们永远不会被传递到$ _POST数组中。

这是一个已知问题吗?我以前没见过......

感谢您的任何指示, ħ

5 个答案:

答案 0 :(得分:1)

使用jQuery.trim(data),但这不太确定,因为可能会影响 您的数据内容。或者看this one可能有帮助

答案 1 :(得分:0)

您的桌子是否缺少html ID? jQuery选择器$('#orderingTable')正在寻找id =“orderingTable”

的东西

答案 2 :(得分:0)

在一些彻底的(和男孩,我的意思是彻底),事实证明,以下简单(但明显)的HTML错误可能导致此问题:

  1. 错误形成的代码EG缺失等
  2. 复制或缺少表单“name”属性
  3. 在创建经过适当验证的HTML时,提交的表单会将所有值正确传递到_POST数组中。在尝试使用编码方法时,确保开发人员注意基础知识的对象课程;)

答案 3 :(得分:0)

我发现使用.html()插入内容而不是.append().prepend()会导致插入的表单字段按预期工作。

答案 4 :(得分:0)

我只是花了很长时间来解决这样的问题。

我将输入字段写入表单并且输入字段未显示在$ _POST提交数组中,完全令人烦恼!!!! Aaaaanyway,我通过查看我的所有HTML来修复它,结果证明我的表格是打开的&#39;在页面上的主要部分之一而不在外面。

因此:

<div>
    <form>
        <input type="text" name="input_field">
    </div>
</form>

现在修复为:

<form>
    <div>
        <input type="text" name="input_field">
    </div>
</form>
傻,我知道,但是以一种巨大的形式,发现它很棘手!所以简而言之就是对你的html进行整理并且它会起作用,我希望能在某个地方帮助某人: - )

中号