php - 通过 ajax 到 PHP 的多维数组

标签 php javascript arrays jquery

好吧,在这里认真挣扎。我在尝试通过 ajax 将多维数组发送到 PHP 时遇到一些问题。这是我一直在尝试的:

为了简化而不是复制粘贴代码墙:

    peoplearray[0]  =  [name] => 'john'
                       [age]  => '28'
                       [sex]  => 'Male'
    peoplearray[1]  =  [name] => 'julie'
                       [age]  => '20'
                       [sex]  => 'Female'

    main_array['item'] = 'x';
    main_array['something'] = 'x';
    main_array['another'] = 'x';

我想通过 post 将其发送到 php。我想我也可以将它们连接在一起,因为无论如何我都是多维的:

    main_array['peoplearray'] = peoplearray;

现在做ajax:

// var data = JSON.stringify(main_array);

var send = $.ajax({
        type: "POST",
        cache: false,
        url: "theurl",
        data: {data:main_array} //I do change this `main_array` when using the above stringify!
});


send.done(function(msg) {
console.log(msg);
})

在 PHP 中,我现在正在执行以下操作:

$data= $_POST['data'];
print_r($data);

在 Firebug 中:(空字符串)

当我对 var data = JSON.stringify(main_array); 取消注释时,我得到以下内容:[][

如果我将 $data = json_decode($_POST['data']); 添加到我得到的 php 中:

Array ( )

基本上 main_array 我意识到不需要是一个数组,所以我可以毫无问题地处理这些东西,但我需要做的是让 peoplearray 结束这样我就可以用它在 php 中做一些 foreach 等等。任何帮助将不胜感激我确信我只是愚蠢!

编辑:这背后的原因是 peoplearray 可以有 0 或 100 个条目,所以我只需要将它放到 php 中,这样我就可以 foreach 它来执行 DB输入。如果有更好的方法,我将不胜感激,因为我对此还是很陌生。

编辑:多亏了 Nicola 的回答,除了重要部分 mainarry.peoplearray 之外,一切都很好 - 它没有出现在返回 console.log 中,我无法在 PHP 中访问它。关于这个的任何解决方案,还是我必须将 foreach 智能放入 javascript 并单独发送所有内容?

最佳答案

首先 main_array 不是数组而是对象,因为在 javascript 中没有关联数组,因此

main_array['peoplearray'] = peoplearray;

相当于

main_array.peoplearray = peoplearray;

你应该像这样声明 main_array

var main_array = {};

然后尝试像这样更改您的函数:

var send = $.ajax({
        type: "POST",
        dataType: "json",
        cache: false,
        url: "theurl",
        data: {data:main_array} 
});

和服务器端

header('Content-type: application/json');
$data= $_POST['data'];
echo json_encode($data);

关于php - 通过 ajax 到 PHP 的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9945640/

相关文章:

php - Magento 客户/ session 不工作

javascript - 获取嵌套列表项的索引

javascript - React Redux array.push 的问题

javascript - 搜索没有重复的数组 React.js

C++ 递归与数组

PHP:mySQL:无法更新数据库中的所有行。表正在部分更新

php - jQuery 错误 : Uncaught ReferenceError: Invalid left-hand side in assignment

php - 在虚拟字段中访问多个外部字段?

javascript - 如何解析和提取javascript类方法?

javascript - 使用 Plotly JS 缓慢渲染图像 + slider