嗨,最初我的数组看起来像这样
PHP
$results = array(
"banana" => $bananavalue,
"apple" => $applevalue,
);
echo json_encode($results);
JS
var fruits = [];
$.ajax({
type: "POST",
url: "actions/MYphp.php",
data: PassArray,
dataType: 'json',
beforeSend: function (html) {
// alert(html);
},
success: function (html) {
var obj = html;
// Now the two will work
$.each(obj, function (key, value) {
fruits.push([key, value]);
});
然而,我想将其改为多维水果和蔬菜,如下所示:
results = array(
"fruit"=>array(
"banana" => $bananavalue,
"apple" => $applevalue
),
"vegetables"=>array(
"lettuce" => $lettuce,
"cabbage" => $cabbage
)
);
echo json_encode($results);
问题是如何在Javascript中循环每个数组并将其分配给两个数组。(水果和蔬菜)
我试过了
$.each(obj['fruit'], function(key, value) {
fruits.push([key, value]);
});
但那没用。
答案 0 :(得分:1)
与PHP不同,javascript没有关联数组。
JSON编码的PHP关联数组解码为javascript普通对象。
访问javascript中的数据:
$.ajax({
type: "POST",
url: "actions/MYphp.php",
data: PassArray,
dataType: 'json',
success: function(obj) {
//do whatever is required with obj.fruits and obj.vegetables here
};
});
通常,您不希望将obj
或obj.fruits
或obj.vegetables
分配给外部作用域中的成员,因为在ajax响应到达之前它们不可用。您通常会在obj.fruits
范围(以及从中调用的函数)中使用obj.vegetables
和success
执行所有必要的操作。
答案 1 :(得分:0)
以类似于PHP,nest 2循环的方式执行此操作。
$.each(obj, function(keyOfOuterArray, innerArray) {
// keyOfOuterArray equals to vegetables, fruit
console.log(keyOfOuterArray);
$.each(innerArray, function(keyOfInnerArray, valueOfInnerArray) {
//valueOfInnerArrayis your inner array value
console.log(keyOfInnerArray, valueOfInnerArray);
});
});
回答你的问题:
var myNewObj = {};
$.each(obj, function(keyOfOuterArray, innerArray) {
$.each(innerArray, function(keyOfInnerArray, valueOfInnerArray) {
myNewObj[keyOfOuterArray][keyOfInnerArray] = valueOfInnerArray;
});
});