Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 30 Noviembre 2019, 23:06 pm



Título: [Pregunta]: ¿Como puedo aplicar JSON a esto?
Publicado por: Leguim en 30 Noviembre 2019, 23:06 pm
Buenos días,

hace poco estoy investigando sobre usar JSON ya que siempre use la manera de "delimitar los datos"

dato_1, dato_2, dato_3, etc
Se ve que con JSON es mucho mejor y es una buena practica inclusive es mejor a XML (corriganme si estoy equivocado, es todo muy nuevo para mi)

En fin la idea no es que ustedes me hagan la tarea ni nada parecido es por eso que voy a estar mostrando una función solo de prueba para que pueda entender como aplicar JSON a una función que llama a un archivo ajax.

Código
  1. // javascript
  2. function_AJAX(1, 2, 3);
  3.  

Código
  1. // function_AJAX
  2.  
  3.        function function_AJAX(a, b, c)
  4. {
  5. $.ajax({
  6. url: 'ajax/archivo_ajax.php',
  7. type: 'POST',
  8. dataType: 'html',
  9. data: {a, b, c},
  10.  
  11. success: function()
  12. {
  13. // Cuando se procese todo (bien o mal) se podrá poner acá funciones que manden mensajes algo como: "Ya se termino la solicitud wuachin" (nada relevante)
  14.  
  15. }
  16. })
  17.  
  18. .done(function(results)
  19. {
  20. $('body').append(results);
  21. })
  22. }
  23.  

Código
  1. // archivo_ajax.php
  2. echo $_POST['a'];
  3. echo $_POST['b'];
  4. echo $_POST['c'];
  5.  

No traten de entender la logica del programa, lo que me interesa es la transferencia de datos usando JSON... sobre como podría hacerlo... algo entiendo pero no veo como poder encararlo...

gracias.


Título: Re: [Pregunta]: ¿Como puedo aplicar JSON a esto?
Publicado por: engel lex en 30 Noviembre 2019, 23:37 pm
Código:
data: {a, b, c},

las llaves se usan para objetos, que en js son lo que en php se llaman array asociativos, es decir el par key:value... pero tu estás haciendo un arreglo y en ese caso lleva corrchetes

en tu caso si lo haces como un arreglo

Código
  1. [a,b,c]

lo recibirias con los indices 0, 1 y 2


en el caso como lo quieres estabas a medio camino de lograrlo... pasas los valores, pero no el nombre...

tienes que hacer

Código
  1. {a:a, b:b, c:c}
\

ojo, parece repetido, pero lo primero siempre lo asume como un valor y no colisiona con la variable usualmente

un ejemplo de un json mas complejo

Código
  1. {
  2.    url: 'ajax/archivo_ajax.php',
  3.    type: 'POST',
  4.    dataType: 'html',
  5.    data: {a:a, b:b, c:c},
  6.    success: function()
  7.        {
  8. // una funcion en un json
  9.        }
  10. }

ya que los parametros a las funciones de jquery y otros en js usualmente se hacen como json por comodidad


Título: Re: [Pregunta]: ¿Como puedo aplicar JSON a esto?
Publicado por: MinusFour en 30 Noviembre 2019, 23:41 pm
Código:
data: {a, b, c},

las llaves se usan para objetos, que en js son lo que en php se llaman array asociativos, es decir el par key:value... pero tu estás haciendo un arreglo y en ese caso lleva corrchetes

en tu caso si lo haces como un arreglo

Código
  1. [a,b,c]

lo recibirias con los indices 0, 1 y 2

Esta es una nueva syntaxis de javascript desde ES6. Si escribes el nombre de una variable, se expande de tal forma que la llave se llama igual que la variable y el valor es el valor de la variable.

Buenos días,

hace poco estoy investigando sobre usar JSON ya que siempre use la manera de "delimitar los datos"
Tu ruta: "ajax/archivo_ajax.php" tiene que regresar JSON.

Código
  1. echo json_encode(array_intersect_key($_POST, array_flip(['a', 'b', 'c'])));

Con jQuery vas a necesitar cambiar el dataType a 'json'.

Código
  1. {
  2.    ...
  3.    dataType: 'json',
  4.    ...
  5. }

La variable results debería ahora ser un objeto que contiene las propiedades 'a', 'b', 'c'.

Código
  1. .done(function(results)
  2. {
  3. //results.a, results.b, results.c, etc...
  4. })