【发布时间】:2017-12-18 23:16:43
【问题描述】:
下午好,
我们正在使用 .serialize() 函数进行 jquery ajax 调用。我们这样做是因为表单有多个列/行,我们希望通过一次调用 ajax 来保存它们。 serialize 函数获取所有相关的表单数据并将其序列化。这是发送到 php ajax 调用的内容。
$.ajax({
type: "POST",
url: "ajax/SaveClaimParts.php",
data: {
'ClaimID': $('.hdn-claim-id').val(),
'Parts': $('.parts-form').serialize()
},
dataType: "json",
success: function(data)
{
console.log("Happy");
},
error: function()
{
console.log("An error occurred while processing the save.");
}
});
这很好用,因为当我看到发送到服务器进行处理的内容时看起来像这样。
claim_part_no=12349&claim_part_desc=TUBE&claim_part_no=85555&claim_part_desc=BRACKET
请注意重复的 part_no 和 part_desc。这不是一个错误,而是我们要提交 2 行的事实。每行包含一个零件号和一个零件序号。
现在的问题是如何在 php 中分解这个字符串,以便可以逐行保存/插入。
这是我尝试过的:
$Parts = $_POST['Parts'];
$PartsArray = array();
parse_str($Parts, $PartsArray);
这可行,但它只有 $PartsArray 中的最后一行。任何帮助将不胜感激。
谢谢。 乔治·埃瓦兹
【问题讨论】:
-
我可以建议将
claim_part_desc重命名为row[0][claim_part_desc]和row[1][claim_part_desc]等,以便PHP 可以在一个漂亮且简单的行数组中处理它,或者使用claim_part_no作为键的一部分。否则,只要您没有复选框字段或空字段,您就可以使用claim_part_desc[]并通过索引将数组拼接在一起。 -
请展示更多尝试。请使用示例输入数据发布您的预期查询。 @Scuzzy 是对的,如果您想要一个
claim_part_no的数组,那么您需要将您的$_POST数据重组为多维的——否则您将覆盖值。 -
尽管我无法控制 html 部分,但我确实将其提交给“网络开发人员”,他们确实同意使用索引号对所有未来的“行”进行编码。感谢您的帮助。
标签: php jquery json serialization