我目前正在寻找一种正确的方法来将更多数据(特别是数组)添加到表单中的序列化数据,然后通过PHP访问它。我尝试了很多,但没有真正有效。
For Instance:
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 - &gt;它工作正常。但是,当我试图在PHP上访问它时,如:
var_dump($_POST);
我明白了:
array(2) {
["firstname"]=>
string(6) "123123"
["undefined"]=>
string(0) ""
}
它说它是“未定义的”,即使通过JS中的console.log,推动也是成功的。
此外,我尝试将其转换为JSON字符串,JSON.stringify(ser)
和data: {ser:ser}
- &gt;这是有效的,但访问它不仅尴尬。
我希望使用$_POST['firstname']
和$_POST['testarr']
代替$_POST[0]['value']
在PHP上访问它。
我希望这是有道理的。长话短说:如何将其他数据/数组添加到序列化字符串中,以后可以在PHP上正确访问?
答案 0 :(得分:1)
试试这个。替换:
ser.push({ newArr:testArr});
用这个:
for (var prop in testArr) {
ser.push({name: prop, value: testArr[prop]});
}
我们在这里做的是创建一个对象数组,每个对象都包含一个名称和值属性。