[英]How to prepare / build Multidimensional Array from Javascript to send to PHP
我必须在PHP中从Ajax / Javascript接收如下数组:
$search = $_POST['query'];
$search = array(
'category1' => array('include' => array(93, 52),'exclude' => array(72)),
'category2' => array('include' => array(93, 52)),
'category3' => array('exclude' => array(72)),
'category4' => array()
);
在我的JavaScript页面中,该数组是在发送之前由用户操作构建的。 用户选择类别和项目来构建它。
例如,我的最终javascript数组必须如下所示:
my_array = '{
"category1":{
"include":["93","52"],
"exclude":["72"]
},
"category2":{
"include":["93","52"]
},
"category3":{
"exclude":["72"]
},
"category4":[]
}';
我尝试了许多query.push,但是当选择了许多类别时它不起作用。
我无法:
(例如:在“ category2”:{“ include”:[“ 93”,“ 52”]}中删除'52',
描述:
可以将类别项目ID放在指定类别的“包括”部分或“排除”部分中(但不能同时放在两者中)
类别下的项目(标签)可以具有3个状态(类):
这是jsfiddle链接: JSFIDDLE
谢谢。
在Javascript中,这是一个数组: []
,这是一个对象: {}
。 所以这就是我要在JS中创建数组的方式:
var my_array = [
{'category1':{'include':[1,2,3], 'exclude':[5]}},
{'category2':{'include':[3,4,5], 'exclude':[6,7,8]}},
{'category3':{'include':[1,2], 'exclude':[7]}}
];
这是演示如何将新值推入数组的小提琴: https : //jsfiddle.net/h15emr8j/
如果要将值推入数组的特定部分,请按以下步骤操作:
my_array[0].category1.exclude.push(100);
您可以按照以下逻辑来实现所需的目标:
var my_array={}; // creating empty array object
my_array.category1={}; // creating new filed in my_array
var include1 = new Array(); //creating include array for category 1
include1.push("93"); // push include values
include1.push("52");
var exclude1 = new Array(); // creating exclude array for category1, if you want
exclude1.push("72"); // push exclude values
my_array.category1.include=include1; // finally add it to category1
my_array.category1.exclude=exclude1;
alert(JSON.stringify(my_array)); // convert your object to JSON string
现在,如果要添加新值以包括和排除 category1 ,则只需要将这些值推入它们各自的数组中即可。
最简单的解决方案可能是这样的。
const jsonArray = [{
category: {
include: ["93", "52"],
exclude: ["72"]
}
..
}];
JS代码
my_array = {"category1": {"include": ["93", "52"], "exclude": ["72"]}, "category2": {"include": ["93", "52"]}, "category3": {"exclude": ["72"]}, "category4":[]};
console.log(my_array);
$.post("array.php", {query: my_array}, function( data ) {
console.log(data);
}, "text");
PHP代码
<?php
$search = $_POST['query'];
print_r($search["category1"]["exclude"]);
因此,这里有一些好东西要学习。 在javasript中初始化数组:
var arr = ['include','exclude'];
arr['include'] = [];
arr['exclude'] = [];
接下来,我们需要使用ajax将数组发送到php脚本:
var jsonString = JSON.stringify(arr);
$.ajax({
url: 'myscript.php',
type: 'POST',
data:{
arr: jsonString
},
success: function(result){
//continue with results
},
error: function(result){
//continue with results
}
});
最后在php端:
$arr = json_decode($_POST['arr']);
//code to execute
echo json_encode($arr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.