Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/12/2013, 18:30
DandyCC
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 12 años, 5 meses
Puntos: 1
Envío y recepción de datos entre JS y PHP con AJAX y JSON

Buenas, hace unos días abrí un hilo para preguntar si se podía enviar y recibir datos entre JS y PHP y que fuera transparente para el usuario. Me dijeron que sí, con AJAX y JSON, investigué un poco y encontré varios ejemplos que me valían. Pero ahora me he atascado y no sé que está fallando. Resumiendo, tengo una sección de comentarios que quiero que el usuario pueda editar o eliminar. El código es más o menos este:

Código Javascript:
Ver original
  1. $(".btn_eliminar").click(function() {
  2.     // Construyo un array con la información a enviar, por ejemplo sería algo así.
  3.     var parametros = {
  4.         "id" : 1,
  5.         "mensaje" : "Esto es un mensaje enviado desde JS"
  6.     };
  7.     // Paso a json
  8.     var datosJSON = JSON.stringify(parametros);
  9.  
  10.     $.ajax({
  11.         type: "POST",
  12.         data: datosJSON,
  13.         url: 'consulta.php',
  14.         success: function(data) {
  15.             var res = jQuery.parseJSON(data);
  16.             if (res.success == 1) {
  17.                 // Código en caso de éxito en la consulta
  18.             }
  19.             else {
  20.                 // Código en caso de fracaso en la consulta
  21.             }
  22.         },
  23.         error: function(e) { // Si no ha podido conectar con el servidor
  24.             // Código en caso de fracaso en el envío
  25.         }
  26.     });
  27. });

El archivo consulta.php simplemente debería recibir los datos por post, modificar la BD y devolver una respuesta. Más o menos sería:

Código PHP:
Ver original
  1. $json = json_decode($_POST["datosJSON"]);
  2.  
  3. // Operaciones con la BD en función de los datos recibidos
  4.  
  5. $respuesta = array (
  6.     "success" => 1,
  7.     "error" => 0,
  8.     "msg" => ""
  9. );
  10. echo json_encode($respuesta);

Pues algo está fallando y por más que reviso no sé lo que es. ¿Alguna idea?

Además, también me gustaría codificar los datos con md5 para evitar sniffers. Si pudiérais orientarme os lo agradecería, aunque mi principal objetivo es que lo primero funcione.

Gracias.

Edito, se me pasó comentar que el código funciona cuando cambio esto en la petición ajax.

Código Javascript:
Ver original
  1. data: {"id": 1, "mensaje": "Esto es un mensaje enviado desde JS"},

Y en el php puedo devolver:

Código PHP:
Ver original
  1. $respuesta = array (
  2.     "success" => 1,
  3.     "error" => 0,
  4.     "msg" => $_POST["mensaje"]
  5. );

Así que supongo que el problema está en la codificación a JSON en JS o en la decodificación en PHP.