0

我有这种向服务器发送数据的方法:

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)
4

4 回答 4

2

jquery会直接取多维数组,不需要序列化。

var data = { foo: 123, bar: 456, rows: [ { column1 : 'hello', column2 : 'hola', column3 : 'bonjour',. }, { column1 : '再见', column2 : 'hasta luego', column3 : 'au revoir', }, ], test1:{ test2: { test3: 'baz' } } }; _在您的 PHP 文件中发布数据如下所示

数组([foo] => 123 [bar] => 456 [rows] => 数组([0] => 数组([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 }); 如果您的 post 数组可能包含您不知道的字段,您可以轻松访问 php 文件中的 Post 数组

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

于 2013-05-11T12:49:27.270 回答
0

您不需要使用 .serializeArray();

只需执行以下操作:

var data = {points: points};

在 PHP 方面:

$points = json_decode($_POST['points']);
于 2013-05-11T12:48:41.350 回答
0

要将数组发送到服务器,请使用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)

于 2013-05-11T12:49:20.737 回答
0

看来你在做一些可疑的事情。使用 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);
于 2013-05-11T12:50:42.430 回答