Foros del Web » Programando para Internet » PHP »

AJAX, return o echo

Estas en el tema de AJAX, return o echo en el foro de PHP en Foros del Web. Estoy comenzando con AJAX, y hay algo en lo que me he fijado pero que no encuentro la respuesta. Después de hacer la petición con ...
  #1 (permalink)  
Antiguo 15/03/2015, 17:05
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
AJAX, return o echo

Estoy comenzando con AJAX, y hay algo en lo que me he fijado pero que no encuentro la respuesta.

Después de hacer la petición con XMLHttpRequest la respuesta con PHP debe ser con echo y no con return. Entonces caí en la cuenta de que enviar valores con echo es una forma limitada de enviar valores; no puedes enviar cómo respuesta un array, quiero decir, podrías enviar un string y partir la cadena en porciones, pero es costoso en programación y líneas.

Así que seguí leyendo y me topé con JSON, al parecer la solución al dilema, ya que devuelve un string con un formato semejante al array y en javascript lo interpretas.

Pero la duda sigue ahí y no entiendo por qué no veo que nadie hable de ello:

¿Por qué al trabajar con AJAX XMLHttpRequest las respuestas de PHP deben ser con echo y no con return (cómo sería lo más obvio)? Esto crea principalmente un problema:

Hay que tener clases para el cliente que no use AJAX y clases para funcionalidades AJAX, eso puede implicar duplicar código para hacer lo mismo.

Saludos.
__________________
Ayúdame a hacerlo por mi mismo.
  #2 (permalink)  
Antiguo 15/03/2015, 20:28
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: AJAX, return o echo

Cita:
Iniciado por guardarmicorreo Ver Mensaje

¿Por qué al trabajar con AJAX XMLHttpRequest las respuestas de PHP deben ser con echo y no con return (cómo sería lo más obvio)? Esto crea principalmente un problema:
Creo que necesitas leer el manual y ver la diferencias entre una cosa y otra
http://php.net/manual/en/function.echo.php
http://php.net/manual/en/function.return.php

Cita:
Hay que tener clases para el cliente que no use AJAX y clases para funcionalidades AJAX, eso puede implicar duplicar código para hacer lo mismo.
Si eso te sucede estas haciendo algo mal
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 15/03/2015, 20:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: AJAX, return o echo

Cita:
¿Por qué al trabajar con AJAX XMLHttpRequest las respuestas de PHP deben ser con echo y no con return (cómo sería lo más obvio)?
De hecho no tiene nada que ver el que uses AJAX o no.

Si bien recuerdo tu tema de echo/return esperaba que ya lo tuvieras más claro, pero veo que sigues perdiendo el tiempo en cosas tan triviales.

Es mas, vamos a olvidarnos de AJAX por un momento.

Una petición normal (GET) ¿crees que deba usar echo o return para imprimir la respuesta?

El enfoque es exactamente el mismo, al final se trata de una petición HTTP que espera cuerpo y cabeceras.

¿Si sabes cómo funciona HTTP verdad?

Pues lo mismo para una petición AJAX, es una petición que exige un cuerpo y cabeceras.

Evidentemente el cuerpo debes imprimirlo (echo) y jamás podrás hacer un return directamente en el script, etc.

Adicionalmente me gustaría que expliques esto:
Cita:
cómo sería lo más obvio


¿Por qué sería lo más obvio?

¿Podrías argumentar lo que dices?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 15/03/2015, 21:32
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: AJAX, return o echo

Cita:
Iniciado por pateketrueke Ver Mensaje
De hecho no tiene nada que ver el que uses AJAX o no.

Si bien recuerdo tu tema de echo/return esperaba que ya lo tuvieras más claro, pero veo que sigues perdiendo el tiempo en cosas tan triviales.

Es mas, vamos a olvidarnos de AJAX por un momento.

Una petición normal (GET) ¿crees que deba usar echo o return para imprimir la respuesta?

El enfoque es exactamente el mismo, al final se trata de una petición HTTP que espera cuerpo y cabeceras.

¿Si sabes cómo funciona HTTP verdad?

Pues lo mismo para una petición AJAX, es una petición que exige un cuerpo y cabeceras.

Evidentemente el cuerpo debes imprimirlo (echo) y jamás podrás hacer un return directamente en el script, etc.

Adicionalmente me gustaría que expliques esto:




¿Por qué sería lo más obvio?

¿Podrías argumentar lo que dices?
Ahhh! pfff, tienes toda la razón, no lo vi así, se ve que no lo pensé bien, tal vez también tengo lagunas respecto a mis conocimientos. Eso es error por mi parte al no tener en cuenta el servidor, directamente pensé en PHP y HTML.

Lo de la obviedad del return, es porque creo recordar, si recuerdo bien, que los metodos de las clases en PHP deben retornar siempre (según la guía de estilos que recuerdo que tú me diste a conocer hace ya un año y medio aprox. :D ), y sólo deben tener un return, no varios. Por eso dije lo de obviedad. Otro error mío porque no tuve en cuenta que al trabajar con AJAX dejo de trabajar entre clases de PHP para trabajar entre dos lenguajes que se comunicarán entre sí mediante HTTP y en formato JSON o XML.

Gracias pateketrueke, aquí ya son las 5 menos 20 de la madrugada y el cansancio pasa factura jejeje.

Gracias de nuevo y un saludo! :D
__________________
Ayúdame a hacerlo por mi mismo.
  #5 (permalink)  
Antiguo 16/03/2015, 00:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: AJAX, return o echo

Hola:

Cita:
Iniciado por guardarmicorreo Ver Mensaje
... mediante HTTP y en formato JSON o XML.
Entre las respuestas que acepta un objeto Ajax (XMLHttpRequest de javascript) no existe responseJSON, así que lo que comentas de JSON hay que matizarlo, porque lo que se recibe es responseText... Si es cierto que si requieres arrays u otras estructuras no debes olvidarte del formato XML (es lo que yo más uso, incluso es más fácil de conseguir el intercambio de forma accesible)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 16/03/2015, 04:10
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años
Puntos: 84
Respuesta: AJAX, return o echo

Cita:
Iniciado por caricatos Ver Mensaje
Hola:



Entre las respuestas que acepta un objeto Ajax (XMLHttpRequest de javascript) no existe responseJSON, así que lo que comentas de JSON hay que matizarlo, porque lo que se recibe es responseText... Si es cierto que si requieres arrays u otras estructuras no debes olvidarte del formato XML (es lo que yo más uso, incluso es más fácil de conseguir el intercambio de forma accesible)

Saludos
No entiendo lo que dices, porque yo creo un JSON con PHP y luego lo parseo en Javascript y funciona bien. Pienso que el responseText es la manera que tiene Javascript de aceptar la respuesta del servidor y esa respuesta puede ser responseText (es posible utilizar JSON) o responseXML (hay que crear un XML).

Yo lo tenía entendido así.

Gracias caricatos! :D
__________________
Ayúdame a hacerlo por mi mismo.
  #7 (permalink)  
Antiguo 16/03/2015, 08:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: AJAX, return o echo

caricatos, disculpa mi sorpresa pero ¿tú prefieres XML sobre JSON?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 16/03/2015, 09:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: AJAX, return o echo

Hola:

Cita:
Iniciado por guardarmicorreo Ver Mensaje
...yo creo un JSON con PHP y luego lo parseo en Javascript y funciona bien...
Cita:
Iniciado por guardarmicorreo Ver Mensaje
...
Pienso que el responseText es la manera que tiene Javascript de aceptar la respuesta del servidor y esa respuesta puede ser responseText (es posible utilizar JSON) o responseXML (hay que crear un XML).

Yo lo tenía entendido así.
Crear un XML o un JSON es casi lo mismo, tan solo debes usar la cabecera headers en el primer caso; y en ambos debe estar bien estructurado...

Cita:
Iniciado por pateketrueke Ver Mensaje
caricatos, disculpa mi sorpresa pero ¿tú prefieres XML sobre JSON?
Que sea moderador en javascript no significa que prefiera depender de javascript; es más, mi consejo siempre es "no depender de javascript", y con XML, puedes enlazar a una página en ese formato y asociarle una hoja xsl y con javascript desactivado todo va bien (lo tengo comprobado), luego con javascript se anula el enlace y se puede buscar los mismos datos en el mismo fichero XML; y sin parsear nada, con el DOM obtienes los datos del tipo que sea (tan estructurados como con JSON...)

También me interesa el tema SEO, y de esa manera evito piruetas para mis propósitos...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 16/03/2015, 09:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: AJAX, return o echo

Cita:
Iniciado por caricatos Ver Mensaje
Que sea moderador en javascript no significa que prefiera depender de javascript; es más, mi consejo siempre es "no depender de javascript", y con XML, puedes enlazar a una página en ese formato y asociarle una hoja xsl y con javascript desactivado todo va bien (lo tengo comprobado), luego con javascript se anula el enlace y se puede buscar los mismos datos en el mismo fichero XML; y sin parsear nada, con el DOM obtienes los datos del tipo que sea (tan estructurados como con JSON...)
Entiendo, pero JSON no implica ni requiere javascript, es un formato nativo en javascript pero hoy en día es un formato de intercambio bien establecido.

Es decir, yo puedo guardar datos en JSON con PHP y leerlos con Ruby, Python, etc.

No entiendo porque debería existir una "dependencia" con javascript sólo por usar JSON.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 16/03/2015, 12:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: AJAX, return o echo

Hola:

No has entendido... con javascript desactivado, no se reciben datos ni con formato texto/JSON (responseText), ni con formato XML. Pero con XML y XSL, se enlaza a una página "comprensible" por cualquier navegador, y la usabilidad sigue existiendo (yo diría de forma óptima)... una respuesta JSON, no me imagino como se vería...

Es más, hoy creo que hay que empezar a acostumbrarse a la estructura XML (sitemap, rss, svg)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 16/03/2015, 14:56
 
Fecha de Ingreso: marzo-2015
Ubicación: Peru
Mensajes: 34
Antigüedad: 9 años, 8 meses
Puntos: 6
Respuesta: AJAX, return o echo

no se si es lo que quieres, si ya tienes una cla con un return simplemente llama a la clase pasa los valores y has un echo para que te devuelva el valor, ahi estas usando la clase.
  #12 (permalink)  
Antiguo 16/03/2015, 15:18
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 14 años
Puntos: 10
Respuesta: AJAX, return o echo

para cosas cortas yo uso un separador e imprimo todo sin JSON

ejemplo

Respuesta de PHP: (Titulo, Body)
Bienvendios a la Pagina[:]En esta Pagina podremos ver mas informacion sobre et.c..e t.....

Y luego la respuesta le doy explode

broken = data.split("[:]");

alert(broken[0]); //Titulo
alert(broken[1]); // BODY

Etiquetas: ajax, echo, return
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:46.