我有一个全局变量,用于在我正在处理的项目中存储大量信息。它是一个具有各种值的对象,我想其中的其他对象。例如......
$.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}"
答案 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上。