<form id="sendobj">
<table class="no-border hover list">
<tbody class="no-border-y">';
while($pendingTransfers = MysqL_fetch_assoc($getPending)){
$id = $pendingTransfers['id'];
echo '
<tr class="items">
<td style="width: 10%;"><span class="label label-primary">'.$counter++.'</span></td>
<td class="text-left"><p>'.$pendingTransfers['NumarInventar'].'</p></td>
<td class="text-left"><p><strong>'.$pendingTransfers['DenumireArticol'].'</strong></p></td>
<input type="hidden" name="id" value="'.$pendingTransfers['id'].'" />
<td class="text-center"><input type="hidden" name="depID" class="getDep" data-placeholder="Selecteaza destinatie" /> <i style="color:red" title="Sterge din lista" onclick="deleteLista('.$pendingTransfers['id'].');" class="text-right fa fa-times-circle fa-lg"></i></td>
</tr>';}
echo '
</tbody>
</table>
</form>
<div class="text-center"><button id="BtnSendobj" type="submit" class="btn btn-primary btn-success"><i class="fa fa-check color-inverse fa-lg"></i> Finish transfers</button></div>
上面的代码为每个记录插入了DB ID,并在上表的每一行上提供了一个select选项,用户可以选择一些值.当用户完成操作时,他将按下“完成传输”按钮,并且所有输入必须进行序列化.问题是我有多个具有相同名称的输入,并且我无法将它们全部分组,因为以后可以在PHP中使用它们.例如,在每个输入的第1行上,我可以有5行.因此结果将为id = 1 DepId = 3456,id = 2 DepId = 5432,依此类推.
$('#BtnSendobj').on('click', function(event) {
event.preventDefault();
var data;
var a = $('#sendobj').serializeArray();
$.each(a, function () {
var depID = $('input[name=depDestinatie]').serializeArray();
var id = $('input[name=id]').serializeArray();
data =[{"id":id, "depID":depID}];
});
//The above will output something like :
// [Object]0: Object
//depId: Array[4]0: Object1: Object2: Object3: Object...
// id: Array[4]0: Object1: Object2: Object3: Object
// Like this i cannot handle them togerther in PHP.
// I think it should look like an array of objects so like this i would //be able to acces them easly , i think that both id's should be in same object //, but this is were i dont kNow how to proceed.
$.ajax({
url: 'subpages/data/transferObjects.PHP',
data: {data: data},
type: 'POST',
success:function(data, textStatus, jqXHR){
console.log('AJAX SUCCESS');
console.log(data);
},
complete : function(data, textStatus, jqXHR){
}
});
});
在这里,我处理ajax帖子.
我要实现的目标是将数据发送到PHP文件,在该文件中,我将使用表单中的值更新数据库.
//some connection
if(isset($_POST['data']))
{
$updateObjects = MysqL_query("UPDATE transactions SET IDDepartamentDestinatie = '$_POST['depID'] WHERE id = '{$_POST['id']}'");
}
但是像这样,它只会更新表单中的最后一条记录,因为我不会遍历所有输入.
如果有人有什么想法,我该怎么做,我已经尝试过找到有关serializeArray或serialize的所有示例,但没有为我工作.
解决方法:
对于这种情况,还有另一种可能性-用[]附加名称来命名这些输入:
<input type="hidden" name="id[]" value="'.$pendingTransfers['id'].'" />
<input type="hidden" name="depID[]" class="getDep" data-placeholder="Selecteaza destinatie" />
然后在$_POST [‘id’]和$_POST [‘depId’]中,您将自动拥有数组.因此,无需额外的麻烦,您只需将其作为数据放入ajax函数中,如下所示:
data: $.param($('#sendobj').serializeArray())
在PHP中,您可以利用以下事实:相应值对的两个数组中的键相同:
if(isset($_POST['depID'])){
foreach($_POST['depID']) as $k => $v){
MysqL_query("UPDATE transactions SET IDDepartamentDestinatie = '$v' WHERE id = '{$_POST['id'][$k]}'");
}
}
还请记住,应该使用MysqL_real_escape_string来清理$_POST值,更好的是,使用PDO进行MysqL处理.