[英]jQuery AJAX post array
我有這個JavaScript數組:
testarr = new Array();
testarr[0] = new Array();
testarr[0]["#FFFFFF"] = "White";
testarr[0]["#FFFFFF"] = new Array();
testarr[0]["#FFFFFF"]["#FFFFFA"] = "A";
testarr[0]["#FFFFFF"]["#FFFFFB"] = "B";
testarr[0]["#000000"] = "Black";
testarr[0]["#000000"] = new Array();
testarr[0]["#000000"]["#000001"] = "A1";
testarr[0]["#000000"]["#000002"] = "B1";
我使用此jQuery AJAX發布方法:
$.ajax({
type: 'POST',
url: 'backEndFile.php',
dataType: 'json',
data: {cat:testarr},
success: function(data) {
if (data.success === true) {
alert("SUCCESS");
} else {
alert("NOT SUCCESS")
}
}
});
我的backEndFile.php
<?php
var_dump($_POST);
?>
在backEndFile中,var dump prints: array(0) {}
找不到我發布的數組。
如果我將數組鍵從字符串更改為數字,如下所示:
testarr[0] = new Array();
testarr[0][0] = "White";
testarr[0][0] = new Array();
testarr[0][0][0] = "A";
testarr[0][0][1] = "B";
testarr[0][1] = "Black";
testarr[0][1] = new Array();
testarr[0][1][0] = "A1";
testarr[0][1][1] = "B1";
然后正確打印
JavaScript數組設計用於保存具有順序的 數字鍵名稱的數據。
當jQuery將它們序列化為Ajax請求時,它將僅包含數字鍵(因為它是一個數組,所以為什么要在其上放置命名鍵?)。
如果要使用命名鍵,請使用Object
而不是Array
。
testarr = new Array();
testarr[0] = new Object();
testarr[0]["#FFFFFF"] = "White";
testarr[0]["#FFFFFF"] = new Object();
testarr[0]["#FFFFFF"]["#FFFFFA"] = "A";
testarr[0]["#FFFFFF"]["#FFFFFB"] = "B";
testarr[0]["#000000"] = "Black";
testarr[0]["#000000"] = new Object();
testarr[0]["#000000"]["#000001"] = "A1";
testarr[0]["#000000"]["#000002"] = "B1";
請注意,您正在用數組覆蓋White和Black值。 您可能不想這樣做。
(通常,相對於構造函數語法( new Array
/ new Object
),您還應該首選文字語法( []
/ {}
))。
testarr = [];
testarr[0] = {};
testarr[0]["#FFFFFF"] = "White";
testarr[0]["#FFFFFF"] = {};
testarr[0]["#FFFFFF"]["#FFFFFA"] = "A";
testarr[0]["#FFFFFF"]["#FFFFFB"] = "B";
testarr[0]["#000000"] = "Black";
testarr[0]["#000000"] = {};
testarr[0]["#000000"]["#000001"] = "A1";
testarr[0]["#000000"]["#000002"] = "B1";
但是然后您可以全力以赴,只使用文字語法:
testarr = [
{
"#FFFFFF": {
"#FFFFFA": "A",
"#FFFFFB": "B"
},
"#000000": {
"#000001": "A1",
"#000002": "B1"
}
}
];
嘗試這個,
testarr = {}
testarr[0] = {}
testarr[0]["white"] = {}
testarr[0]["white"]["#FFFFFA"] = "A";
testarr[0]["white"]["#FFFFFB"] = "B";
testarr[0]["black"] = {}
testarr[0]["black"]["#000001"] = "A1";
testarr[0]["black"]["#000002"] = "B1";
console.log(testarr[0].white);
這是一種生成結構的更合理的方法:
var testarr = [{
"#FFFFFF": {
"#FFFFFA": "A",
"#FFFFFB": "B"
},
"#000000": {
"#000001": "A1",
"#000002": "B1"
}
}];
console.log(testarr[0]["#000000"]["#000001"]); // result "A1"
嘗試在PHP端解碼數據。
json_decode(YOURDATA);
或就像@tpeczek評論一樣,在發布時嘗試JSON.stringify({cat:testarr})
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.