使用jquery通过$ .post发送多维数组

时间:2010-11-23 19:32:03

标签: php jquery json multidimensional-array

我有一个全局变量,用于在我正在处理的项目中存储大量信息。它是一个具有各种值的对象,我想其中的其他对象。例如......

$.myVar {
    currentProj : "Project 1",
    allProjs : [],
    toggleVar : 0
}

现在程序运行并且我做了一些事情,我实际上是在allProjs中添加数组。我想使用数组索引作为项目的名称,然后它包含一堆信息。以下是运行程序几分钟后对象的样例。

(从Chrome控制台复制):

$.myVar
    Object
    currentProj: "McB2"
    toggleVar: 0
    allProjs: Array[0]
        McB1: Array[0]
            length: 0
            __proto__: Array[0]
        McB2: Array[4]
            0: "02070124"
            1: "02030036"
            2: "02090313"
            3: "02090450"
            length: 4

现在我想使用$ .post将此数据传递给PHP文件,以便将其转换为JSON并将其保存在服务器上。

我基本上只是通过运行来完成这个:

$.post('saveJSON.php', $.myVar, function(data) {
    $('#dumpspace').html(data);
});

为了调试我已经输出了PHP文件:

print_r($_REQUEST);

现在我期待一个多维数组,我可以将其转换为JSON然后保存,但所有它都吐出来的是:

Array ( [currentProj] => McB2 [toggelVar] => 0 )

所以我可以看到它没有发送对象的allProj部分,但我不确定为什么!当我在控制台中查看对象时,它似乎显示出来,所以我不确定我缺少什么。

感谢任何帮助。

谢谢!

澄清

我宣布allProjs的第一部分,我可能在那里做错了吗?当我运行Stringify时,我最终得到了类似错误的结果:

JSON.stringify($.myVar)
"{"currentProj":"McB2","allProjs":[],"toggleVar":0}"

3 个答案:

答案 0 :(得分:2)

您需要将.stringify对象/数组转换为JSON字符串。所有“现代”浏览器都使用JSON.stringify(obj)本身支持此功能。如果您还需要支持“较旧”的浏览器版本,则需要转到http://www.json.org并下载提供相同功能的json2.js lib。

反过来说,如果你想从服务器接收一个JSONized字符串,你需要通过将'json'传递给$.post()调用来告诉jQuery你期望一个json字符串,或者你需要再次访问JSON对象来自己解析收到的数据。 JSON.parse(json_string)将从传入的JSON字符串中返回Javascript对象。

答案 1 :(得分:1)

弄清楚我的问题。当我最初声明对象时,我通过放入[]来制作allProj和Array。如果我把它放在allProj:{}中,那么它完美无缺!感谢您的建议,帮助缩小了我的错误。

-M

答案 2 :(得分:0)

我相信您必须先将数组转换为JSON格式,然后才能发布到PHP。

这是我过去使用的方法:

var jsonOb = JSON.stringify(yourArray);

$.post(
"yourPage.php",
{jsonOb:jsonOb},
function(r){
//your success response
}
);

希望这可以成为兄弟!

W上。