我的脚本的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);
});
});
答案 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
选项卡)查看结果。