Pergunta

Eu tenho razões legítimas para fazer o que eu estou tentando explicar. Eu tenho um site de exemplo existente abc.com que tem páginas regulares etc. tudo escrito em PHP. Agora eu gostaria de AJAXify o site ou seja, quando um usuário clica em um link, ele deve buscar o link usando AJAX e substituir o conteúdo da página. Esta é a parte mais fácil e eu posso alcançá-lo usando a função get jQuery.

Agora, o problema surge quando o usuário bookmarks a página. Eu posso usar hash tags para especificar se o usuário estiver em outra página, mas em vez de usar javascript para buscar a nova página novamente, é possível buscar-lo diretamente usando PHP quando a página é chamado.

Você pode me dar um esboço sobre como conseguir o acima. Esta funcionalidade é semelhante ao que o Facebook tem.

Obrigado pelo seu tempo.

Foi útil?

Solução

É uma forma muito simples processo de (1) Analisar a tag da mistura, e (2) o carregamento do conteúdo via Ajax, como faria normalmente.

Se você carregar mais conteúdo quando o usuário clicar na página, ser apenas certo para modificar sempre corretamente o hash tag para refletir o que está na página.

Aqui está um exemplo rápido para brincar. Clique em um nome e observe o hash tag. O Javascript relevante parece com isso:

// 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);
      });

   }

}

Outras dicas

A resposta é não, você não pode obter o valor do lado do servidor do URL hash. Consulte Como chegar Url Hash (#) do servidor lado .

Você terá que obter o client-side valor de hash e faça um pedido extra.

jQuery História é a minha escolha preferida. Ela pode ser encontrada aqui: http://www.balupton.com/projects/jquery-history / Fornecer suporte cross-browser, a ligação a hashes, sobrecarregando hashes, todo o resto.

Há também uma extensão Ajax por ele chamado jQuery AJAXy, permitindo-lhe facilmente atualizar sua página em um aplicativo Ajax adequada sem necessidade de mudanças do lado do servidor e permanecendo SEO e JS-incapacitados: http://www.balupton.com/projects/jquery-ajaxy/

Esta é a solução escolhida por esses sites como http://wbhomes.com.au/ http://www.balupton.com

Em geral eles são bem documentados, apoiado e rico em recursos. Eles também ganhou uma questão de recompensas aqui Como mostrar requisições Ajax na URL?

Bem, você pode usar uma dessas ferramentas ou rolar seus próprios. Usos window.location.hash juntamente com outros truques.

Eu escrevi um artigo recentemente sobre este problema exato. O artigo é estilo tutorial. Usando o evento de alteração de hash, mostrando im como adicionar parâmetros para o url, que pode desencadear ajax pedidos com número infinito de parâmetros, portanto, funcionar de uma forma muito escalável.

Você pode encontrar mais sobre isso aqui em http : //andresgallo.com/2012/06/08/ajaxifying-the-web-the-easy-way/

tampas Parte I como responder às ligações de hash, enquanto a Parte II abrange a forma de enviar os dados na url hash para uma solicitação ajax, portanto, o que lhe permite fazer praticamente qualquer coisa que você quer fora das hash tags em sua url.

A melhor maneira de fazer isso é ter um index.php que carrega todas as outras páginas com base nas peças de URL depois. Por exemplo:

http://www.example.com/index.php/reports / funcionários / hoursWorked

Neste caso index.php será executado, pode ver o que está sendo solicitado é se as horas trabalhadas relatório, e carregar esse conteúdo. O problema é que, se index.php em seguida, carrega todos os outros conteúdos depois que o uso de AJAX, o URL no navegador nunca vai mudar.

Uma maneira de contornar esse problema seria a de colocar um "Link para esta página" link em cada página que contém o formulário de URL para os usuários para marcar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top