我目前正在寻找一种适当的方法来将附加数据(尤其是数组)添加到表单中的序列化数据,并在以后通过 PHP 访问它。我尝试了很多,但没有任何效果。
例如:
HTML:
<form id='addUserForm'>
<input type='text' name='firstname'>
</form>
JS/JQUERY:
var testArr = {
one: "1",
two: "2",
three: 3
};
var ser = $("#addUserForm").serializeArray();
ser.push({ newArr:testArr});
console.log(ser);
$.ajax({
type: "POST",
url: url,
data: ser,
});
我使用了 serializeArray() 并将一个新数组推送到 serializedArray。 当我 console.log -> 它工作正常。但是当我试图在 PHP 上访问它时:
var_dump($_POST);
我得到:
array(2) {
["firstname"]=>
string(6) "123123"
["undefined"]=>
string(0) ""
}
它说它是“未定义的”,即使通过 JS 中的 console.log,推送也成功了。
我还尝试将它转换为 JSON 字符串,使用 JSON.stringify(ser)
和 data: {ser:ser}
-> 这有效,但它访问它非常尴尬。
我想在 PHP 上使用 $_POST['firstname']
和 $_POST['testarr']
而不是 $_POST[0] 访问它['值']
。
我希望这是有道理的。长话短说:如何将额外的数据/数组添加到序列化字符串并稍后在 PHP 上正确访问它?
最佳答案
试试这个。替换:
ser.push({ newArr:testArr});
用这个:
for (var prop in testArr) {
ser.push({name: prop, value: testArr[prop]});
}
我们在这里所做的是创建一个对象数组,每个对象都包含一个名称和值属性。
关于javascript - jQuery:通过 ajax 将附加数组添加到序列化表单数据并使用 PHP 访问它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36582200/