我目前正在寻找一种适当的方法来从表单中向序列化数据中添加其他数据(尤其是数组),并稍后通过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.stringify(ser)data: {ser:ser}->将其转换为JSON字符串,但是可以访问它,但这样做很尴尬。

我想用$_POST['firstname']$_POST['testarr']而不是$_POST[0]['value']在PHP上访问它。

我希望这是有道理的。长话短说:我如何在序列化的字符串中添加其他数据/数组,并稍后在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/

10-13 02:38