2016-03-06 57 views
-1

我想发送一个数组与ajax到PHP。有人请 建议一种方法来实现它?如何发送数组javascript到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

<?php $ elements = json_decode($ _ POST ['marcas']); echo($ elements [0]); ?> –

+0

你还没有用JSON.stringify(latLngMarcadores)发送,发送如下数据:{“marcas”:latLngMarcadores} –

+0

这些方法会将json或数组在php中? –

回答

1

首先,@BurakÖztürk的如指出,必须直接发送数据是(不使用JSON.stringify()),像这样:

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

那么数据是一个对象的对象,而不是数组。

目前在PHP你对解码来说:

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

这样可以使对象作为对象!相反使用:

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

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

+0

我可以这样做吗? $ value = $ elements [0]); –

+0

@ValeriaTorres如果你使用了上面的第二种形式,是的。另一方面,正如BurakÖztürk所指出的,你必须直接以'{“marcas”:latLngMarcadores}'(不要使用'JSON.stringify()')发送数据。 – cFreed

+0

<?php \t require('config.php'); \t $ mysqli = new mysqli(HOST,USER,PASS,DB); $ elements = json_decode($ _ POST ['marcas'],true); $ uno = $ elements [0]; $ resultado = array(“elemento”=> $ uno); echo json_encode($ resultado); ( ?> in console:responseText:“{”elemento“:null}”我无法获得值:'( –