我正在尝试将带有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]);
?>
答案 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);
这样,对象就成为关联数组,您可以按预期访问和迭代它们。