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

标签 javascript php jquery ajax post

我目前正在寻找一种适当的方法来将附加数据(尤其是数组)添加到表单中的序列化数据,并在以后通过 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/

相关文章:

php - 自动填写网络表单并返回结果页面

javascript - WebGL 中的结束 <li> 标签

php - 如何在PHP中获取阿联酋的当前时间

php - Apache(HTTPD)启用目录/文件写入和文件上传需要哪些配置?

javascript - JQuery 未传递 SELECT 表单参数

javascript - 如何使用对象键在 mui 数据表中设置列名称

javascript - 有没有办法将鼠标悬停上的个人文本添加到全日历

php - 如果数据库大小接近 2GB,请更改打印输出

javascript - 加载 Javascript 文件的问题

javascript - 如何在 jQuery DataTable 中将列数据设为超链接