Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Beto Lima

ajax

Recommended Posts

Olá pessoal, hoje eu utilizo ajax pra printar os conteudos de site, quase todo mundo usa tb.

Acontece que agora eu me deparei com um problema.

 

Primeiro vou explicar como eu uso.

 

ajax.js

/* INSTANCIA O AJAX */
function ajaxInit() {
	var req;
	try {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	} catch(e) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(ex) {
			try {
				req = new XMLHttpRequest();
			} catch(exc) {
				alert("O seu navegador não suporta Ajax, atualize para uma versão mais recente.");
				req = null;
			}
		}
	}
	return req;

} // FIM


/* INICIO CATEGORIAS */
function verificar(op){
	ajax = ajaxInit();
	ajax.open("GET",op, true);
	ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    ajax.setRequestHeader("Pragma", "no-cache");

	ajax.onreadystatechange=function() {
		if (ajax.readyState==1){
		document.getElementById("conteudo").innerHTML = "<div class='carregando'><img src='images/loading.gif' border='0' /></div>";
		}
		if (ajax.readyState==4){
	
	   var  t= document.getElementById("conteudo");
t.innerHTML = ajax.responseText;
		}
	}
	ajax.send(null);
} // FIM

function pesquisa(op,codigo,pagina){

switch(op){//inicio switch

case 0:	{ // CHAMADO NO ONLOAD DA INDEX, CAPA INICIAL
		url="conteudo.php?link="+codigo;
		break;
		}

case 1: { // FORM DE BUSCA
		name = escape(document.getElementById('busca').value); // INPUT DO BUSCA
		if(name!=""){ // SE VARIAVEL NÃO FOR VAZIA
			if(pagina==""){ // SE PAGINA FOR VAZIO
			url="processa_busca.php?termo="+name;
			}
			else {
			url="processa_busca.php?_pagi_pg="+pagina+"&termo="+name;
			}//fim else
		}//fim
break;
		}

case 2:	{ // CATEGORIAS
		if(pagina==""){
		//alert("A pagina nao contem valor")
			url="processa_categoria.php?categorias="+codigo;
		}
		else {
		//alert("A pagina contem valor")
		url="processa_categoria.php?_pagi_pg="+pagina+"&categorias="+codigo;
		}//fim else
break;
		}

case 3:	{ // CATEGORIA GERAL
		url="processa_geral.php?geral="+codigo;
break;
		}

}//fim switch

//alert(url)
verificar(url);
} //FIM CATEGORIAS
/*-----------------------------------------------------------------------------------------------------*/
/* INICIO DETALHE PRODUTO */
function detprod(ob){
	ajax = ajaxInit();
	ajax.open("GET",ob, true);
	ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    ajax.setRequestHeader("Pragma", "no-cache");

	ajax.onreadystatechange=function() {
		if (ajax.readyState==1){
		document.getElementById("divdetalhe").innerHTML = "<div class='carregando'><img src='images/loading.gif' border='0' /></div>";
		}
		if (ajax.readyState==4){
	
	   var  b= document.getElementById("divdetalhe");
		b.innerHTML = ajax.responseText;
		}
	}
	ajax.send(null);
} 

function pesq(ob,cod){

switch(ob){//inicio switch

case 0:	{ 
		url="detalhe.php?link="+cod;
		break;
		}
	} //fim switch
	detprod(url);
} // fim function
/* FIM DETALHE PRODUTO */

e no php chamo o js normal, no <body onload="pesquisa(0,'home','');" pra chamar por padrão a capa inicial e a div <div id='conteudo'>aqui carrega o conteudo chamado pelo ajax</div>

 

Uma demonstração real pode ser vista neste site simples:

Clique aqui

 

Se vocês passarem o mouse por cima dos links das categorias, vão notar que o link está no onclick chamando a função no js e passando os parametros pro ajax. No final o php reconhece os dados passados, faz o select no banco e devolve pro ajax printar na div.

Ok até aí beleza.

 

-------------------------------------------

O que eu queria era o seguinte:

 

que o usuário pudesse acessar qualquer parte do site digitando apenas o link na barra de endereço.

Como os links estão no onclick e passando uma função, logo colocando na barra de endereços não iria funcionar.

 

Ex: www.site.com.br/javascript:pesquisa(2,12,'');

iria para categoria televisores

 

Idiota isso né!!!!

 

Teria uma forma de usar palavras para os links? assim como todo o resto?

 

Ex: www.site.com.br/televisores

iria para categoria televisores

 

Até para que o google pudesse indexar nas buscas e o usuário ir direto para o link sem precisar entrar na raiz do site.

 

Vocês estão entendendo onde quero chegar? ja vi que até em blogs os nomes dos posts são os próprios links mas com a adição de underline _

 

Bom pessoal minha idéia é alterar o que eu uso e ter um ajax melhorado.

 

Agradeço pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A forma correta de se implementar AJAX, não obstrutivo, é deixar o site funcionando SEM javascript, e depois incrementá-lo adicionando oque você quiser.

 

Faça as páginas funcionarem.

Por exemplo. Primeiro faça o site funcionar com um sistema de includes em php, ou outra server-side.

<a href="?pg=home">
ai você desativa o atributo onclick, preventDefault(), e só leva em consideração o clique:
<a href="?pg=home" onclick="pesquisa(0,'home','');">

Compartilhar este post


Link para o post
Compartilhar em outros sites

A forma correta de se implementar AJAX, não obstrutivo, é deixar o site funcionando SEM javascript, e depois incrementá-lo adicionando oque você quiser.

 

Faça as páginas funcionarem.

Por exemplo. Primeiro faça o site funcionar com um sistema de includes em php, ou outra server-side.

<a href="?pg=home">
ai você desativa o atributo onclick, preventDefault(), e só leva em consideração o clique:
<a href="?pg=home" onclick="pesquisa(0,'home','');">

William, desculpe mas não peguei direito essa idéia.

Teria um exemplo mais detalhado para o entendimento?

 

O que eu entendi foi tipo, fazer o site normal sem ajax, sem chamar js nenhum, somente com includes do php.

Até aí beleza, o resto não peguei direito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.