2009-07-06 14 views
13

Tengo razones legítimas para hacer lo que estoy tratando de explicar. Tengo un sitio existente que dice abc.com que tiene páginas regulares, etc. todo escrito en php. Ahora me gustaría AJAXify el sitio, es decir, cuando un usuario hace clic en un enlace, debe buscar el enlace utilizando AJAX y reemplazar el contenido de la página. Esta es la parte fácil y puedo lograrlo usando la función jQuery get.AJAXify sitio

Ahora el problema surge cuando el usuario marca la página. Puedo usar etiquetas hash para especificar si el usuario está en otra página, pero en lugar de usar javascript para recuperar la página nueva, ¿es posible buscarla directamente usando PHP cuando se llama a la página?

Puede darme un resumen de cómo lograr lo anterior. Esta funcionalidad es similar a lo que tiene Facebook.

Gracias por su tiempo.

+2

No sé por qué esto fue votado negativamente, es una pregunta perfectamente legítima. –

+1

el bit de AJAX es realmente fuera del punto, lo que quiere saber es si php puede leer etiquetas de anclaje y redirigir. es decir, ¿puede probar mainpage.php # about_us (enlace marcado como favorito) y redirigir a aboutus.php (enlace directo al usuario de contenido que estaba mirando cuando se lo reservó). No sé la respuesta, pero sugiero aclarar la pregunta. –

+0

@musicfreak: de acuerdo, le di un voto positivo para volver a ponerlo en nums positivos –

Respuesta

3

Es una manera bastante simple proceso de (1) Analizar el hachís, y (2) Cargando el contenido a través de Ajax como lo haría normalmente.

Si carga más contenido cuando el usuario hace clic en la página, asegúrese de modificar siempre correctamente la etiqueta hash para reflejar lo que está en la página.

Aquí está a quick example para jugar con él. Haga clic en un nombre y observe la etiqueta hash. El Javascript correspondiente tiene este aspecto:

// Go straight to content if it's in the hash. 
$(document).ready(function(){ 
    load_story_from_hash(); 
}); 

// Call this function whenever user clicks on a hash link 
function set_hash(hash){ 
    window.location.hash = hash; 
    load_story_from_hash() 
} 

// Actually load content based on the hash in the URL 
function load_story_from_hash(){ 

    var hash = window.location.hash; 
    hash = hash.replace(/^#/, ''); 

    if (hash) { 

     $('#post_container').load(hash+'.html', {}, function(){ 
     $.scrollTo('#post_container', 1000); 
     }); 

    } 

} 
+0

en su ejemplo, cuando uso los botones hacia atrás y hacia delante no recuerda el estado anterior. –

-1

La mejor manera de hacerlo es tener un index.php que cargue todas las demás páginas en función de las partes de la URL posteriores. Por ejemplo:

http://www.example.com/index.php/reports/employees/hoursWorked

En este caso se ejecutará index.php, se puede ver lo que está siendo solicitada es es las horas trabajadas informe, y cargar el contenido. El problema es que si index.php luego carga todo el contenido después de eso usando AJAX, la URL en el navegador nunca cambiará.

Una forma de evitar ese problema sería poner un enlace "Enlazar con esta página" en cada página que contenga esa forma de URL para que los usuarios la marquen como favoritos.

3

La respuesta es no, no se puede obtener el valor del lado del servidor hash de URL. Ver How to get Url Hash (#) from server side.

Deberá obtener el valor hash del lado del cliente y realizar una solicitud adicional.

+0

Este es el quid de la cuestión, ese valor debe ser recuperado enDocumentReady, y luego se utiliza para activar el funkiness ajax relevante. –

1

jQuery History es mi elección preferida. Se puede encontrar aquí: http://www.balupton.com/projects/jquery-history/ Proporcionar soporte de navegador cruzado, enlace a hashes, hash de sobrecarga, todo lo demás.

Hay también una extensión Ajax para ello llama jQuery AJAXy, lo que le permite actualizar fácilmente su página web en una aplicación adecuada Ajax y sin necesidad de cambios del lado del servidor y SEO restante y agradable JS-minusválidos: http://www.balupton.com/projects/jquery-ajaxy/

Este es la solución elegida por sitios tales como http://wbhomes.com.au/ y http://www.balupton.com

En general, ambos están bien documentados, son compatibles y tienen muchas funciones. También han ganado una pregunta de recompensa aquí How to show Ajax requests in URL?

0

Escribí un artículo recientemente sobre este tema exacto. El artículo es estilo tutorial. Usando el evento de cambio de hash, estoy mostrando cómo agregar parámetros a la url, lo que puede disparar solicitudes ajax con un número infinito de parámetros, por lo tanto, funciona de una manera bastante escalable.

Puede encontrar más información sobre él aquí en http://andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/

Parte I se refiere a la forma de responder a los enlaces de hash, mientras que la segunda parte se explica cómo enviar los datos de la url de hash a una solicitud de ajax, por tanto, que le permite hacer casi todo lo que quieras de las etiquetas hash en tu url.