Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Diferencia entre exit() y echo en AJAX jQuery

Estas en el tema de Diferencia entre exit() y echo en AJAX jQuery en el foro de PHP en Foros del Web. Hola a todo mundo! En este post hablo de PHP y jQuery. Si consideran que el post no va aquí, me disculpo. En mi caso, ...
  #1 (permalink)  
Antiguo 27/05/2016, 08:19
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta Diferencia entre exit() y echo en AJAX jQuery

Hola a todo mundo!

En este post hablo de PHP y jQuery. Si consideran que el post no va aquí, me disculpo.

En mi caso, devuelvo una respuesta AJAX mediante un JSON, así:
Código PHP:
if ( $conexion->query($query) ) {
    
$arrayRespuestas = array(
        
'statusResponse' => 'Actualización exitosa'
    
);
    echo 
json_encode($arrayRespuestas);

Supongamos que este script está en el archivo process.php. La pregunta es: ¿qué significa exactamente ese echo?

Es decir, ¿el echo devuelve la respuesta y termina absolutamente el script, de modo que ya no se lee ningún código dentro de process.php una vez que se manda el echo?

Lo pregunto por lo siguiente. Digamos que quiero hacer un exit() en caso que process.php detecte una variable $_POST que no debería estar llena. ¿El echo tendría el mismo resultado que el exit()?

Saludos!
  #2 (permalink)  
Antiguo 27/05/2016, 08:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

Pregunta básica número 1: ¿ya leíste en el manual exactamente qué hace echo o necesitas que alguien en el foro te lo diga?

Pregunta básica número 2: ¿ya leíste en el manual exactamente qué hace exit o necesitas que alguien en el foro te lo diga?

Ahora, después de que hayas leído el manual de ambas funciones seguro comprenderás las diferencias y terminaras concluyendo que abrir un tema así no tenía sentido.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/05/2016, 20:42
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa Respuesta: Diferencia entre exit() y echo en AJAX jQuery

Cita:
Iniciado por pateketrueke Ver Mensaje
Pregunta básica número 1: ¿ya leíste en el manual exactamente qué hace echo o necesitas que alguien en el foro te lo diga?

Pregunta básica número 2: ¿ya leíste en el manual exactamente qué hace exit o necesitas que alguien en el foro te lo diga?
Maestro pateketrueke, gracias por responder. Ok, ok, quizá mi pregunta no era tan literal como la entendiste. Mi idea de fondo era más bien si en el contexto de AJAX jQuery, el echo tiene tanta fuerza como en su contexto la tiene un exit.

Por ejemplo, si yo hago una petición AJAX, en el momento que el script dentro de process.php encuentra un echo, ahí se detiene en seco el script AJAX y devuelve aquello que se le indica. Y ya no hace nada más! Lo cual me hace pensar que en este caso (AJAX) un echo termina todo el proceso. Y quizá en este sentido lo asemejé a un exit, aunque no tengan nada que ver uno y otro.

Por favor, maestro, no me digas que no se entiende mi planteamiento!

Saludos!
  #4 (permalink)  
Antiguo 29/05/2016, 21:06
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

Cita:
echo — Muestra una o más cadenas
Cita:
exit — Imprime un mensaje y termina el script actual
Uses Php enlazado a Angular, Jquery, Node, cURL, lo que quieras, la función de echo y exit no varían.

En este caso, ajax al recibir los datos de respuesta, almacena todos los echo que tu hayas puesto en tu script PHP hasta que éste finalice, el cuál puede finalizarlo un exit inclusive, y también la cadena que devuelva el exit te lo va a recibir.

Haz las pruebas y verás de lo que te hablo, saludos.
  #5 (permalink)  
Antiguo 29/05/2016, 21:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

Concluyo con la misma opinión que rodocoyote15, no hay variaciones, así que el hecho de usar AJAX es totalmente irrelevante.

Recuerda que al final AJAX es Javascript, y la técnica consiste en realizar una petición HTTP de manera asíncrona, que es subyacente únicamente al cliente: y no afectará en lo absoluto la respuesta del servidor.

Así que no importa cómo hagas la petición, al final sigue siendo invocada de la misma forma en el servidor.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 22/09/2016, 21:00
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: Diferencia entre exit() y echo en AJAX jQuery

Cita:
Iniciado por rodocoyote15 Ver Mensaje
...ajax al recibir los datos de respuesta, almacena todos los echo que tu hayas puesto en tu script PHP hasta que éste finalice...
Muchas gracias por sus valiosas respuestas. Pero en esto que cito está justo lo que preguntaba. Sé que respondo todo esto ya muy tarde, y ojalá no sea tan tarde como para que ya no se me conteste.

Mi pregunta, formulada de manera distinta: ¿qué hace que un script AJAX devuelva lo que se le indica que devuelva? ¿Es el echo?

Es decir, mi process.php es el archivo que hace todo lo que yo quiero que se haga mediante AJAX, y es ese archivo el que devuelve la respuesta que finalmente se muestra al usuario. Pregunto: ¿qué hace que tal archivo termine y devuelva lo que se le dice que devuelve? Sé que esta pregunta suena muy muy tonta, pero necesito formularla. ¿En el momento que el script encuentra un echo, en ese momento el script entiende que el contenido del echo es lo que se tiene que devolver y el script ya no avanza? Efectivamente esto es lo que pasa, pero a estas alturas yo ya no sé nada,

Saludos!
  #7 (permalink)  
Antiguo 22/09/2016, 21:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

Cita:
¿qué hace que un script AJAX devuelva lo que se le indica que devuelva? ¿Es el echo?
Cualquier cosa que genera una salida.

¿Qué es una salida?

Cualquier contenido que se envía como respuesta al cliente que hace la petición.

Sí, echo es una forma de "imprimir contenido y producir salida", al igual que print_r(), o die(), etc.

Realmente "echo" es la forma más primitiva y básica de imprimir contenido, aunque existen muchas más: stream, buffers, etc.

Cita:
¿En el momento que el script encuentra un echo, en ese momento el script entiende que el contenido del echo es lo que se tiene que devolver y el script ya no avanza?
No.

El intérprete de PHP ejecutará todo el código hasta el final del mismo, y sólo hasta el final es que enviará todo lo que esté en su "bufffer" de salida.

Te sugiero que estudies un poco de cómo funciona HTTP.

Cliente (hace la petición):

Cita:
GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Servidor (devuelve una respuesta):

Cita:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
- La primer linea siempre incluirá el verbo, path y protocolo usado de la petición, la respuesta incluye el protocolo, status y mensaje.
- Las siguientes lineas (antes de la linea en blanco) representan las cabeceras, tipo de contenido, cookies, etc.
- Después de la linea en blanco comienza la respuesta (buffer de salida).

Justamente "imprimir" algo (ej. echo) añade contenido al buffer de salida, cuando el script se finaliza entonces se construye todo el mensaje de respuesta.

Precisamente no entender cómo funciona esto produce muchos problemas, por ejemplo, enviar cabeceras cuando ya se comenzó a imprimir en el buffer de salida.

¿Se entiende?

No puedes enviar cabeceras si ya comenzaste a generar la respuesta: básico.

Ahora, repito lo mismo de hace tiempo: no importa cómo hagas la petición: en la consola, navegador, javascript (ajax), etc.

Lo importante es entender que siempre se ejecutará de la misma forma la petición en el servidor, así que realmente es indiferente si usaste ajax o no.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 23/09/2016, 03:03
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

A parte de lo que ya te ha comentado el compañero decir que el Script php finalizará o terminará su ejecución en los siguientes casos:

- Se llega al final del archivo.
- Encuentra una sentencia exit o su equivalente die.
- Encuentra una sentencia return en el ámbito global del Script principal.

Con la respuesta del compañero y esto creo que el tema debería quedar zanjado.
__________________
Unset($vida['malRollo']);
  #9 (permalink)  
Antiguo 02/10/2016, 13:11
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

exit() provoca que el sistema salga del sistema , die() no devuelve mas que lo que ya a dejado atras y echo es una imprension en pantalla como printf.
  #10 (permalink)  
Antiguo 03/10/2016, 05:01
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

Cita:
exit() provoca que el sistema salga del sistema
Bonita redundancia.
Cita:
die() no devuelve mas que lo que ya a dejado atras
A saber que has querido decir con esto. die es un equivalente de exit no hay ninguna diferencia entre uno y otro.
__________________
Unset($vida['malRollo']);
  #11 (permalink)  
Antiguo 03/10/2016, 10:05
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

si que hay diferencia . no me quiero enredar mas en su confusión disculpe por no aclararle mas.
  #12 (permalink)  
Antiguo 04/10/2016, 07:32
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Diferencia entre exit() y echo en AJAX jQuery

Cita:
Iniciado por skywolker Ver Mensaje
si que hay diferencia . no me quiero enredar mas en su confusión disculpe por no aclararle mas.
No, no y no. En PHP die y exit son equivalentes. Deberías de revisar el manual. No hay ninguna diferencia entre uno y otro. Usar uno u otro es mera cuestión de gustos.
__________________
Unset($vida['malRollo']);
  #13 (permalink)  
Antiguo 06/10/2016, 20:30
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: Diferencia entre exit() y echo en AJAX jQuery

pateketrueke y xerifandtomas, excelente! Gracias por esas explicaciones. Son absolutamente nutritivas. Doy por solucionado el asunto.

Gracias y hasta pronto!

Etiquetas: jquery
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 03:37.