[英]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.