使用JavaScript收集AJAX生成的文本框值
我的脚本的AJAX调用以下PHP文件并打印一个带有使用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
$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' >";
重要:
PHPmysql\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
});