Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: franfis en 23 Julio 2014, 19:45 pm



Título: acceder a url para ver un resultado de ajax
Publicado por: franfis en 23 Julio 2014, 19:45 pm
Hola amigos, sobre el pushState de javascript.  ;D

Supongamos que usando ajax presento algo en la pagina, para indicarlo en el url uso pushState para cambiar la dirección y almacenar en historial(ya que ajax por si solo no lo hace).

Pero, si le doy el link a otra persona para acceder a ese resultado(ajax), le aparecera not found ya que es un link falso.

Como soluciono ese probelma, creo que usando .htaccess pero a que dirección redigiria?  :huh:

Graciass por la ayuda.



Título: Re: editar .htaccess para acceder a url creado por pushState
Publicado por: MinusFour en 23 Julio 2014, 19:53 pm
¿La url en cuestión existe o simplemente le has cambiado la barra de direcciones? ¿Existe el archivo al que pueda acceder en cuestión?

Si existe el archivo, pero la url es diferente puedes usar mod_rewrite de apache.


Título: Re: acceder a url para ver un resultado de ajax
Publicado por: franfis en 23 Julio 2014, 20:14 pm
Si presentamos algo en la pagina con ajax, el url sigue igual por eso uso el pushstate para cambiar la url, si esta url la pegamos en otra pestaña del navegador tendremos como resultado not found como es logico.

Ahora el problema es que cuando alguien quiere acceceder mediante ese link no podra.

Saludos


Título: Re: acceder a url para ver un resultado de ajax
Publicado por: MinusFour en 23 Julio 2014, 20:25 pm
Si presentamos algo en la pagina con ajax, el url sigue igual por eso uso el pushstate para cambiar la url, si esta url la pegamos en otra pestaña del navegador tendremos como resultado not found como es logico.

Ahora el problema es que cuando alguien quiere acceceder mediante ese link no podra.

Saludos

¿No hay ninguna URL que te muestre la información una vez cargado el AJAX de tu página inicial? Si es así es completamente lógico que te envie un 404. ¿Para que hacer un push state de un recurso inexsistente?

Lo que necesitas hacer es tener una URL que apunte al contenido cargado por el AJAX. Lo que las páginas hacen por ejemplo es:

Tienen una cabecera y un cuerpo y un archivo digamos index.php. Si cargas el archivo normalmente: index.php, te carga la cabecera y el cuerpo por default. La navegación aquí la hacen transparente usando AJAX y hacen un pushstate para el recurso que carga la información que de otra manera el AJAX estaría cargando.

Este recurso puede ser algo como: index.php?cuerpo=2. Ya las URLs las puedes reescribir como tu quieras: Index/2 o Index/Cuerpo/2 con el mod_rewrite.

En resumen: Si vas a hacer un push state, asegurate que un recurso exista, de lo contrario solo confundes al usuario.


Título: Re: acceder a url para ver un resultado de ajax
Publicado por: franfis en 23 Julio 2014, 22:19 pm
Es que estoy usando $.ajax() , no cambia la url.

Por ejemplo: Al entrar a la pagina carga index.php y la url se ve asi http://localhost/pagina/ dentro de esta hago click a un enlace item1 que ejecuta $.ajax() que a su vez retorna un resultado llamando a un archivo php y como el url no se cambia con $.ajax() lo cambio con pushState a http://localhost/pagina/item1 que a su vez lo almacena en el historial para que exista al hacer click en atras y adelante.

Que debo hacer para que al copiar este url http://localhost/pagina/item1 a otra pestaña obtenga resultado.


Título: Re: acceder a url para ver un resultado de ajax
Publicado por: MinusFour en 23 Julio 2014, 22:43 pm
Tiene que haber un recurso asociado a esa url. Si el contenido de la página es identico al archivo PHP que mandas a llamar desde AJAX simplemente haces un mod_rewrite. Sino lo es, tienes que hacer un recurso que lo sea.

Tu lo que estás preguntando aquí es como hacer la página modular:

Suponiendo que tienes un archivo que se llama pagina.php que te carga el contenido por default puedes hacer uso de variables get como pagina.php?item=1 para acceder directamente al contenido del item 1. Este recurso lo puedes renombrar a como tu quieras con el mod_rewrite.

No hay forma que apache emule una sesion de navegador para que te devuelva el recurso que quieras, necesitas programar el recurso.