Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript收集AJAX生成的文本框值_Javascript_Php_Jquery_Ajax_Html Table - Fatal编程技术网

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

使用JavaScript收集AJAX生成的文本框值,javascript,php,jquery,ajax,html-table,Javascript,Php,Jquery,Ajax,Html Table,我的脚本的AJAX调用以下PHP文件并打印一个带有$attrib和文本框的表 有人能告诉我如何收集数组或类似数组中的$attrib和文本框吗 尝试的代码给出的值类似于“AssetTrib%5B%5D=model”。所以请帮我纠正这个问题,或者给我一个新的方法来做同样的事情 echo "<table border='1' cellspacing='12' cellpadding='4' style='border-collapse: collapse' width='700' id=adda

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

有人能告诉我如何收集数组或类似数组中的
$attrib
和文本框吗

尝试的代码给出的值类似于“AssetTrib%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' >";
重要: PHP
mysql\uUcode>扩展已被弃用,使用它代表了一个重大的安全问题。据

从PHP5.5.0开始,此扩展已被弃用,并从PHP7.0.0开始删除。相反,应该使用mysqli或PDO_MySQL扩展


现在,实际答案是: 我建议您对HTML进行一些更改,如果您可以:

  • 所在的表包装到
    元素中
  • 为生成的
    s提供
    $attrib
    给定的
    名称
    属性,例如
如果您无法修改PHP/HTML代码,请告诉我,我们会找到解决办法

我使用这些更改更新了您的JSFIDLE。您的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>

以下是更新的JSFIDLE:
检查JS控制台(按F12键并转到
控制台
选项卡)以查看结果。

您试图实现什么,因为可能有一种更简单/更好的方式格式化html以检索所需信息。我需要的是基于所添加设备类型的显示表单。例如,插入设备A时显示10个元素,插入设备B时显示15个元素。这些(10或15个元素)属性存储在mysql数据库中。注意到您的输入语句没有右括号。这是问题的根源吗?不是杰夫。我刚刚纠正了。你真的在重复这个吗<代码>回声“”您错过了每个报价包装属性值。谢谢,它正在工作。非常感谢。我决心保持良好的学习曲线。
<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

});
$(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

});