簡體   English   中英

JS文字數組到PHP

[英]JS array of literals to PHP

在JS中,我有以下內容:

var languages = [{
    language: "da"
    listening: "A1"
}, {
    language: "en"
    listening: "B2"
}];

$.ajax調用之后,在PHP中最終得到的是:

array(4) {
  [0]=>
  array(1) {
    ["language"]=>
    string(2) "da"
  }
  [1]=>
  array(1) {
    ["listening"]=>
    string(2) "A1"
  }
  [2]=>
  array(1) {
    ["language"]=>
    string(0) "en"
  }
  ...
}

我需要的是這樣的:

array(2) {
  [0]=>
  array(2) {
    ["language"]=>
    string(2) "da",
    ["listening"]=>
    string(2) "A1"
  }
  [1]=>
  array(2) {
    ["language"]=>
    string(2) "en",
    ["listening"]=>
    string(2) "B1"
  }
}

有沒有一種簡單的方法可以做到這一點? 我是否需要迭代和處理它?

使用JSON.stringify編碼數據結構,將結果字符串作為單個參數發送,然后在PHP中使用json_decode($json, true)對其進行解碼。

JS

var data = [
   { language: "da", listening: "A1"}, 
   { language: "en", listening: "B2"}
];
// ...
$.post(url, { data: JSON.stringify(data) }, function() { ... });

PHP

if (isset($_POST['data'])) {
  $data = json_decode($_POST['data'], true);
  // process this array of arrays
} 

我認為您的意思是這樣的:

var languages = [{
    language: "da"
    listening: "A1"
}, {
    language: "en"
    listening: "B2"
}];

因此,實際上您有兩個對象要傳輸到PHP,並打包到一個數組中,對嗎? 嘗試使用JSON:

創建一個JSON字符串並將其發送到服務器:

$.ajax({
    url: '...',
    type: 'POST',
    data: { json: JSON.stringify(languages)}
});

在服務器端,您現在將在$ _POST ['json']中具有json字符串,並且可以使用以下命令對其進行解碼:

json_decode($_POST['json'], true); 

獲取(多維)數組,或者

json_decode($_POST['json']); 

對於包含兩個對象的數組。

編輯

如果啟用了“魔術引號”,則必須先去除反斜杠:

json_decode(stripslashes($_POST['json']), true); 

HTH,

你好:

我認為您應該嘗試以下javascript

{
    "languages": [
        {"language":"da","listening":"A1"},
        {"language":"en", "listening":"B2"}
    ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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