2012-04-11 14 views
12

Estaba teniendo problemas para que la función de éxito de una llamada jQuery Ajax funcione correctamente y se me indicó que la razón era que mi función PHP estaba usando return $ result cuando debería usar echo $ result.Diferencia entre php echo y return en términos de una llamada jQuery ajax

Al cambiar la función PHP que el Ajax llamó de "return $ result" a "echo $ result" se solucionó el problema, pero ¿por qué? Hay muchas explicaciones sobre la diferencia entre los dos (retorno y eco) en términos de scripts PHP, pero ¿cómo difieren cuando se envía ese valor a una llamada Ajax?

Respuesta

20

Bueno, la llamada ajax lee la respuesta del servidor, y esa respuesta debe presentarse como algún tipo de datos legibles, como application/json o text/html.

Para escribir esos datos, necesita echo desde el servidor con PHP.

La declaración de devolución no escribe datos, simplemente regresa a nivel del servidor.

8

Una llamada Ajax usa la respuesta de una solicitud HTTP. Un script PHP no genera salida mediante returing, sino haciendo eco.

2

El comando echo envía datos a la salida estándar, esto es en las aplicaciones del navegador web, el cliente que solicitó los datos. En CLI, imprima los datos en la consola. Y el comando return sale de la función con un valor, pero no imprime nada.

Si desea comunicarse entre funciones de PHP, debe usar return. Pero si quiere salida algunos datos, debe usar echo.

5

Las llamadas Ajax ven los datos de la misma manera que nosotros, lo lee como una cadena. Básicamente se trata de acceder a otra página web y "recibir" el resultado. El 'retorno' de PHP devuelve el valor solo en el servidor. En realidad, debe generar los datos para que cuando se realice la llamada Ajax, la página que está viendo tenga datos escritos.

Cuestiones relacionadas