如何将数组javascript发送到PHP?

时间:2016-03-06 02:06:27

标签: javascript php ajax

我正在尝试将带有ajax的数组发送到PHP。有人可以请 提出一种方法来实现它?

我的代码:

 guardarRuta: function(){

            console.log('Guardando ruta...');

            for (var i = 0; i < marcadores.length; i++) {
                latLngMarcadores.push({'tipo': 'parada', 'latitud': marcadores[i].position.lat(), 'longitud': marcadores[i].position.lng()});
            }


            latLngOrigenDestino.push({'tipo': origenDestino[0].tipo, 'latitud': origenDestino[0].marker.position.lat(), 'longitud': origenDestino[0].marker.position.lng()});
            latLngOrigenDestino.push({'tipo': origenDestino[1].tipo, 'latitud': origenDestino[1].marker.position.lat(), 'longitud': origenDestino[1].marker.position.lng()});


            Ext.Ajax.request({
                url: 'http://becea.mx/dabbawalas_valeria/adm/save_route_adm.php', 
                method: 'POST',
                params: {
                    nombre: 'RutaNueva',
                    data: {"marcas" : JSON.stringify(latLngMarcadores)},
                },
                reader: {
                    type: 'json',
                    rootProperty: 'status'
                },
                success: function(response) {
                    //Ext.Viewport.setMasked(false);
                    Ext.Msg.alert('Listo', 'Ruta guardada con éxito!');
                },
                failure: function() {
                    //Ext.Viewport.setMasked(false);
                    Ext.Msg.alert('ERROR', 'Error de servidor');
                }
            });
        }

<?php

$elements = json_decode($_POST['marcas']);
echo($elements[0]);


?>

1 个答案:

答案 0 :(得分:1)

首先,正如@BurakÖztürk所指出的,您必须按原样直接发送数据(不使用JSON.stringify()),如下所示:

params: {
    nombre: 'RutaNueva',
    data: {"marcas" : latLngMarcadores},
},

然后数据是对象的对象,而不是数组。

目前在PHP中,你用以下代码解码它:

 $elements = json_decode($_POST['marcas']);

这会将对象保留为对象!而是使用:

 $elements = json_decode($_POST['marcas'], TRUE);

这样,对象就成为关联数组,您可以按预期访问和迭代它们。