2016-03-06 146 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}」我無法獲得值:'( –