我的总体目标是检索php数组并使用ajax调用将其存储到javascript数组中。我是新手,所以请耐心等待。
我的ajax调用成功,它返回echo json_encode(array);并转到成功函数。
我对如何获取json编码数据并将其存储到我能够在ajax调用之外使用的javascript数组感到困惑。
$.ajax({
type: "POST",
url: myurl.php
data: {var1: var1, var2:var2},
dataType: "json",
success: function(data)
{
console.log(data);
var simplified = JSON.stringify(data);
console.log(simplified);
var jsonObj = $.parseJSON('[' + simplified + ']');
},
});
控制台日志给了我;
Object {63: Object, 64: Object, 65: Object}
和
{"63":{"Comment":"tc 1"},"64":{"Comment":"tc 2"},"65":{"Comment":"tc 3"}}
分别
我想要一个这种形式的数组;
63
Comment=>"tc 1"
64
Comment=>"tc 2"
65
Comment=>"tc 3"
感谢您提供任何帮助!
UPADTE: 关于如何在ajax调用之外访问创建的数组的任何建议?每当我尝试时,它都表示未定义。
答案 0 :(得分:2)
您必须遍历对象的属性并创建一个数组:
var myObj = {
1: [1, 2, 3],
2: [4, 5, 6]
};
var array = $.map(myObj, function(value, index) {
return [value];
});
console.log(array);
答案 1 :(得分:1)
你在这里:
var data = JSON.parse('{"63":{"Comment":"tc 1"},"64":{"Comment":"tc 2"},"65":{"Comment":"tc 3"}}');
alert(data[63].Comment); // to access
希望得到这个帮助。
答案 2 :(得分:1)
您的data
变量已经是一个对象。 jQuery在内部将JSON解析为一个对象。如果你想把它变成一个数组,你可以去:
$.ajax({
type: "POST",
url: myurl.php
data: {var1: var1, var2:var2},
dataType: "json",
success: function(data)
{
var arr = [];
$.map(data, function(value) {
arr.push(value);
});
}
});
但是,如果您仍然需要密钥(您在服务器端),请保持这样,并像data[63]
一样访问它。 Javascript没有关联数组,这里它们是对象,语义上称为类似数组的对象。