簡體   English   中英

如何通過ajax發送二維數組?

[英]How to send two-dimensional array via ajax?

我已經有了將數據發送到服務器的方法:

var points = [];
var coords = polyline.geometry.getCoordinates();
for (var i = 0; i < coords.length; i++)
{
    var x = (coords[i][0]).toFixed(4);
    var y = (coords[i][1]).toFixed(4);
    points[i] = [x,y];
}
$("form").on('submit',
    function(e){
        var data = $(this).serializeArray();
        console.log(points);
        data.push({name:'points[]',value:points});
        $.ajax(
            {
                url: '/admin/index/add-route',
                method: 'post',
                data: data,
                success: function(result) {
                    console.log('succcess');
                }
            }
        );
        console.log(data);
        e.preventDefault();
        return false;
    }
);

在后端,我獲得具有這些值的一維數組:

(var dump of $_POST['points'])
array (size=1)  0 => string '48.9225,24.6948,48.9220,24.7090' (length=31)

jQuery將直接采用多維數組,而無需序列化。

var data = {foo:123,bar:456,行:[{column1:'hello',column2:'hola',column3:'bonjour',。 },{第1列:“再見”,第2列:“ hasta luego”,第3列:“ au revoir”,},],test1:{test2:{test3:“ baz”}}}; _Post PHP文件中的數據如下所示

Array([foo] => 123 [bar] => 456 [rows] => Array([0] => Array([column1] => hello [column2] => hola [column3] => bonjour)

        [1] => Array
            (
                [column1] => goodbye
                [column2] => hasta luego
                [column3] => au revoir
            )

    )

[test1] => Array
    (
        [test2] => Array
            (
                [test3] => baz
            )

    )

)

定義數據多維數組后,您的Ajax可能會像

$ .ajax({type:'post',cache:false,url:'./ajax.php',data:data}); 如果您的帖子數組可能包含您不知道的字段,則可以使用以下命令輕松地在php文件中訪問帖子數組

$ data = file_get_contents('php:// input'); $ data = json_decode($ data,true);

您不需要使用.serializeArray();。

只需執行以下操作:

var data = {points: points};

在PHP方面:

$points = json_decode($_POST['points']);

要將數組發送到服務器,請使用JSON.stringify(object) JSON.stringify(array)將數組或對象轉換為字符串。 使用來自PHP的相同方法,再次json_decode(string)創建php對象(或數組): json_decode(string)

http://php.net/manual/de/function.json-decode.php

另一種方法是json_encode(data)並在JS端進行解析: JSON.parse(string)

看來您正在做些可疑的事情。 當您使用serializeArray()時,您將表單轉換為對象:

.serializeArray()-將一組表單元素編碼為名稱和值的數組。

.serializeArray()文檔


還要用您的場景模型檢查此JSFiddle (出於明顯的原因刪除了ajax)。


無論如何,由於您已經在使用jquery和POST,請使用JSON對數組進行編碼。

var data = $(this).serializeArray();
data.push({name:'points',value:points});
var dataJson = JSON.stringify(data);

然后通過你的ajax

在php方面,您只需要解析json

$data = json_decode($json_string);

暫無
暫無

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

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