如何通过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)
你并不需要使用.serializeArray();
只需做到以下几点:
var data = {points: points};
,并在PHP端:
$points = json_decode($_POST['points']);
我想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() - 编码集合形式的元素为名称 和值的数组。
还要检查这个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);
你尽量只使用数组作为数据,而第一序列化呢?为什么在序列化之后推向数组,serializeArray是用于表单元素的? – adeneo 2013-05-11 12:47:46
检查我的答案,这[JSFiddle] http://jsfiddle.net/tivie/J5nFS/3/ – Tivie 2013-05-11 13:16:56