如何通过ajax发送二维数组?

问题描述:

我有了这个方法将数据发送到服务器:如何通过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) 
+0

你尽量只使用数组作为数据,而第一序列化呢?为什么在序列化之后推向数组,serializeArray是用于表单元素的? – adeneo 2013-05-11 12:47:46

+0

检查我的答案,这[JSFiddle] http://jsfiddle.net/tivie/J5nFS/3/ – Tivie 2013-05-11 13:16:56

你并不需要使用.serializeArray();

只需做到以下几点:

var data = {points: points}; 

,并在PHP端:

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

我想OP想要传递表单数据以及点数组 – Tivie 2013-05-11 12:56:55

要发送一个阵列到服务器,使用JSON.stringify(object),RESP。 JSON.stringify(array)将数组或对象转换为字符串。从PHP用同样的方法,以使从该字符串的PHP-对象(或阵列)再次:json_decode(string)

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

绕另一条路是json_encode(data)并解析它的JS侧:JSON.parse(string)

Jquery将直接采用多维数组,无需序列化。

VAR数据= { FOO:123, 栏:456, 行:[ { 列1: '你好', 列2: 'HOLA', 栏3: '的Bonjour' ,. }, { 列1: '再见', 列2: '闪现luego', 栏3: '再见', }, ], TEST1:{ TEST2:{ TEST3: '巴兹' } } }; 在PHP文件_POST数据看起来像这样

阵列 ( [富] => 123 [巴] => 456 [行] =>数组 ( [0] =>数组 ( [COLUMN1] =>你好 [列2] => HOLA [栏3] =>的Bonjour )

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

    ) 

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

    ) 

) 

一旦定义数据多维数组,在Ajax可以为s imple作为

$阿贾克斯({ 类型: '后', 缓存:假的, 网址:” ./ajax。php', data:data }); 如果你的文章数组可能有你不知道的字段,你可以很容易地访问你的PHP文件中的Post数组。 $ data = json_decode($ data,true);

看来你在做一些可憎的事情。当使用serializeArray()时,一种形式转换为对象:

.serializeArray() - 编码集合形式的元素为名称 和值的数组。

.serializeArray() docs


还要检查这个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);