使用JavaScript收集AJAX生成的文本框值

时间:2015-09-07 03:39:13

标签: javascript php jquery ajax html-table

我的脚本的AJAX调用以下PHP文件并打印一个带有$attrib和文本框的表。

有人可以告诉我如何收集数组中的$attrib和文本框或类似内容吗?

尝试过的代码就是提供"assetattrib%5B%5D=model"之类的值。所以请帮我纠正这个问题或者给我一个新的方法来做同样的事情。

echo "<table border='1' cellspacing='12' cellpadding='4' style='border-collapse: collapse' width='700' id=addattrib >";

while ($row = mysql_fetch_assoc($results)) {
  $attrib = $row['attrib'];
  echo "<tr bgcolor='white'>
    <td class='value'>$attrib</td>
    <td class='value'><input type=text name=assetattrib[] value = '' </td>
  </tr>";
}

echo "</table>";
echo "<input type=submit name='btnSaveAsset' id = 'btnSaveAsset' value='Save' >";

我尝试了下面的代码。

$(document).on("click", "#btnSaveAsset", function() {
  $(document.getElementsByName('assetattrib[]')).each(function() {
    var x = $(this).serialize();
    alert(x);
  });
});

1 个答案:

答案 0 :(得分:0)

重要:

PHP mysql_扩展名已弃用,使用它代表了一个主要的安全问题。根据{{​​3}}

  

自PHP 5.5.0起,此扩展已弃用,自PHP 7.0.0起已被删除。相反,应该使用mysqli或PDO_MySQL扩展名。

现在的答案是:

我建议您对HTML进行一些更改,如果可以的话:

  • <input>所在的表格包裹到<form>元素
  • 为生成的<input>提供name给出的$attrib属性,例如<input name="user" />

如果您无法修改PHP / HTML代码,请告知我们,我们会找到解决方法

我使用此更改更新了您的jsfiddle。你的PHP代码应该像这样结束:

<form id="btnSaveAsset" onsubmit="return false;">
    <table border='1' cellspacing='12' cellpadding='4' style='border-collapse: collapse' width='700' id='addattrib'>

        <?php while ($row = mysql_fetch_assoc($results)) {
                $attrib = $row['attrib']; ?>

                <tr bgcolor='white'>
                    <td class='value'><?php echo $attrib; ?></td>
                    <td class='value'><input type='text' name='<?php echo $attrib; ?>' /> </td>
                </tr>

        <?php } ?>

    </table>
    <input type=submit name='btnSaveAsset' id='btnSaveAsset' value='Save' />
</form>

然后,您使用以下选项之一收集数据:

$(document).on("click", "#btnSaveAsset", function () {

    var data = $("#myForm").serializeArray();
    console.log(data); // Array of objects

});

OR

$(document).on("click", "#btnSaveAsset2", function () {

    var tempData = $("#myForm").serializeArray();
    var data = {};

    $.each(tempData, function () {
        data[this.name] = this.value;
    });

    console.log(data); // Just an object

});

以下是更新的jsfiddle:php.net 检查您的JS控制台(按 F12 并转到Console选项卡)查看结果。