estoy frente al problema de la recepción de una matriz vacía cuando hago una petición AJAX de la siguiente manera:jQuery AJAX PHP JSON problema
Este es el código que estoy ejecutando en JavaScript:
<script type="text/javascript" src="lib/jquery.js"></script>
<script type="text/javascript" src="lib/jquery.json.js"></script>
<script type="text/javascript">
$(document).ready(function(){
/* Preparar JSON para el request */
var mJSON = new Object;
mJSON.id_consulta = new Array;
for (var i=0; i<3; i++){
mJSON.id_consulta[i] = new Object;
mJSON.id_consulta[i].id = i;
}
var sJSON = $.toJSON(mJSON);
$.ajax({
type: "POST",
url: "getUbicaciones.php",
data: sJSON,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(respuesta){
alert(respuesta);
},
error: function (request,error){
alert("Error: " + request.statusText + ". " + error);
}
});
});
</script>
Y este es el código en PHP:
<?php
/* Decodificar JSON */
$m_decoded = $_POST;
print_r($m_decoded);
exit;
?>
Y todo lo que obtenemos de esto, el uso de herramientas para desarrolladores de Chrome es una matriz vacía:
Array
(
)
¿Alguna pista sobre qué estoy haciendo mal?
El sJSON cadena se está codificando correctamente, esto es lo que me pasa cuando hago una "alerta" en la que uno:
{"id_consulta":[{"id":1},{"id":2},{"id":3}]}
gracias a todos por adelantado!
Bueno, funcionó, pero podrías haber simplemente dicho 'data: mJSON' y no es necesario mencionar' processData', tampoco es necesario convertirlo a JSON con 'var sJSON = $ .toJSON (mJSON.id_consulta);'. Simplemente podría haber escrito 'data: mJSON' y eliminar' processData parameter' .... En PHP end obtendría directamente una matriz que no necesita 'decode' ni' stripslash' – swapnilsarwe
vea el código [en pastebin] (http : //pastebin.com/iM3cnE0G) – swapnilsarwe