jQuery:通过ajax将附加数组添加到序列化表单数据并使用PHP访问它?

时间:2016-04-12 19:19:19

标签: javascript php jquery ajax post

我目前正在寻找一种正确的方法来将更多数据(特别是数组)添加到表单中的序列化数据,然后通过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上正确访问?

1 个答案:

答案 0 :(得分:1)

试试这个。替换:

ser.push({ newArr:testArr});

用这个:

for (var prop in testArr) {
    ser.push({name: prop, value: testArr[prop]});
}

我们在这里做的是创建一个对象数组,每个对象都包含一个名称和值属性。

相关问题