簡體   English   中英

如何從Javascript准備/構建多維數組以發送到PHP

[英]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個狀態(類):

    • btn-default:未選擇項目,必須刪除指定數組的項目ID
    • btn-danger:項目被排除,項目ID必須出現在指定數組的“排除”列表中
    • btn-primary:包含intem,項目ID必須存在於指定數組的“ include”列表中

這是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM