簡體   English   中英

JavaScript / jQuery多維數組(對象)到php

[英]JavaScript / jQuery multidimensional array (object) to php

我想使用這種結構將數組發送到php:

Array[0]['name'] = ...
Array[0]['def'] = ...
Array[1]['name'] = ...
Array[1]['def'] = ...

等等....

為此,我有一個多維數組對象,如下所示:

var allShapes = new Array();
$('.shape_name').each(function(index){
    allShapes[index] = new Array();
    allShapes[index]['name']=$(this).val();

    allShapes[index]['def']=$(this).closest("tr").find('*[id*=shape_def_]').val();
});

我通過發布請求將其發送到php:

$.post("../some.php", {
    'shape_defs' : allShapes
}, function() {

    console.log(allShapes);

}, "json").success(function() {
   console.log("success");
});

如何在php中遍歷thos數組? 那里出事了......

$ _POST數組(在json_decode之后)具有以下內容:

[{"name":"Ta","def":"somestring"},{"name":"WSCall","def":"somestring"},{"name":"manual","def":"somestring"}]

如何迭代獲取鍵的值?

人們從PHP轉到JavaScript時,常見的誤解似乎是他們沒有意識到非整數 不是 JavaScript 數組中的標准部分。 解釋器不會抱怨的原因是因為Array繼承了Object並且Object可以使用任何String作為

如果您嘗試使用非標准 序列化 JavaScript數組 ,則會完全丟失它們,因為它們無法以Array文字的形式編寫。

因此,應該將Object創建為allShapes的項,而不是Arrays的項

var allShapes = []; // array literal
$('.shape_name').each(function (index) {
    allShapes[index] = { // object literal
        'name': $(this).val(),
        'def': $(this).closest("tr").find('*[id*=shape_def_]').val()
    };
});

最后,使用JSON.stringify將結構轉換為JSON

var allShapesJSON = JSON.stringify(allShapes);
// send allShapesJSON..

使用JSON.stringify序列化數組,然后使用json_decode在PHP中對其進行解析應該可以解決您的問題。 如果不對它們進行編碼,復雜的數據結構通常無法很好地傳輸。

暫無
暫無

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

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