Ir para conteúdo

POWERED BY:

Arquivado

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

Amigo_zz

Problema com innerhtml

Recommended Posts

Olá pessoal,Tenho a certeza que será de facil resoluçao mas eu estou bloqueado.Tenho uma pagina de pesquisa em asp. Quando faço a pesquisa, é chamada uma funçao de ajax para retornar o resultado.A duvida é a seguinte:Como é que sempre que uma pesquisa é feita, aparece numa determinada div o resultado da busca?document.getElementById('contador').innerHTML=3Por exemplo...onde colocarei esta linha? no body onload nao pode ser porque a pag de pesquisa é um include....Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto fica dentro do seu

xmlhttp.onreadystatechange = function () {  if ( xmlhttp.readyState == 4 ) {     .....    .....    .....    document.getElementById('contador').innerHTML=3  } }

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que criar uma função que recebe os dados do ajax em XML, recebendo os dados você exibe, sendo assim você coloca esse document.getElementById('contador').innerHTML=valor dentro dessa função que retorna os resultados vindos da ajax. ok? espero ter-lhe ajudado. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto fica dentro do seu

xmlhttp.onreadystatechange = function () {  if ( xmlhttp.readyState == 4 ) {     .....    .....    .....    document.getElementById('contador').innerHTML=3  } }

So tenho um probleminhas...o 3 é apenas um exemplo...na realidade equivale a
response.write rs.recordcount
por exemplo, como posso executar isto: document.getElementById('contador').innerHTML=valorem qualquer ponto de uma página? tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos dizer que o conteudo da variavel valor é o que response.write rs.recordcount retorna.

Aí você usa isso mesmo... document.getElementById('contador').innerHTML=valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos dizer que o conteudo da variavel valor é o que response.write rs.recordcount retorna.

Aí você usa isso mesmo... document.getElementById('contador').innerHTML=valor

A questao prende-se com o invocar essa linha de js:

dim strSQL,C1,C2			select case Request.QueryString("t")		   case "cursos"				c1="cod_curso"				c2="curso"				frm="form_cursos"		   case "noticias"  				c1="cod_noticia"				c2="noticia"				frm="form_noticias"		   case "areas"  				c1="cod_area"				c2="area"				frm="form_areas"		   case "conteudos"  				c1="cod_conteudo"				c2="conteudo"				frm="form_conteudos"		end select				mysqldb()				if Request.QueryString("query")="" then			strSQL="select * from " & Request.QueryString("t")		else			strSQL="select * from " & Request.QueryString("t") & " where " & c2 & " like '%" & Request.QueryString("query") & "%'"		end if				executasql(strSQL)		if rs.recordcount>0 then				strHTML=strHTML & "<div id=""resultado"">" & vbCrLf		strHTML=strHTML & "	<div id=""cabec"">" & vbCrLf		strHTML=strHTML & "		<div style=""width:490px;"">" & vbCrLf		strHTML=strHTML & "			Registos" & vbCrLf		strHTML=strHTML & "		</div>" & vbCrLf		strHTML=strHTML & "		<div style=""width:50px;"">" & vbCrLf		strHTML=strHTML & "			Opções"  & vbCrLf		strHTML=strHTML & "		</div>" & vbCrLf				strHTML=strHTML & "	</div>" & vbCrLf		strHTML=strHTML & "	<div style=""width:100%;clear:both;"">" & vbCrLf			while not rs.eof			strHTML=strHTML & "<div style=""width:100%;clear:both;"">"			strHTML=strHTML & "	<div style=""width:490px;float:left;color:black;"">" & vbCrLf			strHTML=strHTML & "	   " & left(rs.fields(c2),50) & vbCrLf			strHTML=strHTML & "	</div>" & vbCrLf			strHTML=strHTML & "	<div style=""float:left;margin-right:15px;"">" & vbCrLf			strHTML=strHTML & "		<a href=""default.asp?pag=" & frm & "&action=alterar&cod=" & rs.fields(c1) & """ >" & vbCrLf			strHTML=strHTML & "			 <img src=""imagens/editar.jpg"" border=""0"" title=""Alterar Registo""/>" & vbCrLf			strHTML=strHTML & "		</a>" & vbCrLf			strHTML=strHTML & "	</div>" & vbCrLf			strHTML=strHTML & "	<div>"			strHTML=strHTML & "		<a href=""#"" onclick=""eliminar('default.asp?pag=" & frm & "&action=eliminar&cod=" & rs.fields(c1) & "')"">"			strHTML=strHTML & "			<img src=""imagens/eliminar.jpg"" border=""0"" title=""Eliminar Registos""/>"			strHTML=strHTML & "		</a>"			strHTML=strHTML & "	</div>" & vbCrLf			strHTML=strHTML & "</div>" & vbCrLf			rs.movenext		wend				strHTML=strHTML & "	</div>" & vbCrLf		strHTML=strHTML & "</div>" & vbCrLf		else			strHTML="Lamentámos, mas não foram encontrados registos na sua pesquisa!"		end if				Response.Write Server.URLEncode(strHTML)				Response.Write "<script>"		Response.write "document.getElementById('tr').innerHTML='" & rs.recordcount & "'"		Response.Write "</script>"
Esta é a página que retorna a pesquisa

 

mas as ultimas 3 linhas nao funcionam...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa é a página que seu ajax chama?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa é a página que seu ajax chama?

Não.É a pagina que retorna o resultado da pesquisa. A que é chamada pelo Ajax.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então é sim :huh: Agora me mostrar seu codigo AJAX

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então é sim :huh: Agora me mostrar seu codigo AJAX

function buscaInstantanea() {	if(document.getElementById) { // Para os browsers complacentes com o DOM W3C.		var termo = document.getElementById('txtpesquisa').value;		var tabela = document.getElementById('cmbtabela').value;		var exibeResultado = document.getElementById('resultadoBusca'); // div que exibirá o resultado da busca.				var ajax = openAjax(); // Inicia o Ajax.		ajax.open("GET", "pesquisa.asp?action=pesquisar&query=" + termo + "&t=" + tabela, true); // Envia o termo da busca como uma querystring, nos possibilitando o filtro na busca.		ajax.onreadystatechange = function() {					if(ajax.readyState == 1) { // Quando estiver carregando, exibe: carregando...				exibeResultado.innerHTML = "<h2>A Carregar...</h2>";			}			if(ajax.readyState == 4) { // Quando estiver tudo pronto.				if(ajax.status == 200) {					var resultado = ajax.responseText; // Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado).					resultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos 					resultado = unescape(resultado); // Resolve o problema dos acentos					exibeResultado.innerHTML = resultado;				} else {					exibeResultado.innerHTML = "Erro: ";				}			}		}			ajax.send(null); // submete	}}
Tudo funciona, falta mesmo é o total de registos encontrados

Compartilhar este post


Link para o post
Compartilhar em outros sites

as ultimas três linhas você vai substituir por:

Response.write "<recordCount>" & rs.recordcount & "</recordCount>"

E o AJAX fica assim:

function buscaInstantanea() {	if(document.getElementById) { // Para os browsers complacentes com o DOM W3C.		var termo = document.getElementById('txtpesquisa').value;		var tabela = document.getElementById('cmbtabela').value;		var exibeResultado = document.getElementById('resultadoBusca'); // div que exibirá o resultado da busca.				var ajax = openAjax(); // Inicia o Ajax.		ajax.open("GET", "pesquisa.asp?action=pesquisar&query=" + termo + "&t=" + tabela, true); // Envia o termo da busca como uma querystring, nos possibilitando o filtro na busca.		ajax.onreadystatechange = function() {					if(ajax.readyState == 1) { // Quando estiver carregando, exibe: carregando...				exibeResultado.innerHTML = "<h2>A Carregar...</h2>";			}			if(ajax.readyState == 4) { // Quando estiver tudo pronto.				if(ajax.status == 200) {					var resultado = ajax.responseText; // Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado).					resultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos 					resultado = unescape(resultado); // Resolve o problema dos acentos					tag = 'recordCount';					initSub = resultado.indexOf('<'+tag+'>');					initTagLen = tag.length+2;					finiSub = resultado.indexOf('</'+tag+'>');					totalRecords = resultado.substring('<'+tag+'>'+initTagLen,finiSub);					document.getElementById('tr').innerHTML = totalRecords;					exibeResultado.innerHTML = resultado.substring(0,initSub);				} else {					exibeResultado.innerHTML = "Erro: ";				}			}		}			ajax.send(null); // submete	}}

isso deve resolver xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

as ultimas três linhas você vai substituir por:

Response.write "<recordCount>" & rs.recordcount & "</recordCount>"
E o AJAX fica assim:
function buscaInstantanea() {	if(document.getElementById) { // Para os browsers complacentes com o DOM W3C.		var termo = document.getElementById('txtpesquisa').value;		var tabela = document.getElementById('cmbtabela').value;		var exibeResultado = document.getElementById('resultadoBusca'); // div que exibirá o resultado da busca.				var ajax = openAjax(); // Inicia o Ajax.		ajax.open("GET", "pesquisa.asp?action=pesquisar&query=" + termo + "&t=" + tabela, true); // Envia o termo da busca como uma querystring, nos possibilitando o filtro na busca.		ajax.onreadystatechange = function() {					if(ajax.readyState == 1) { // Quando estiver carregando, exibe: carregando...				exibeResultado.innerHTML = "<h2>A Carregar...</h2>";			}			if(ajax.readyState == 4) { // Quando estiver tudo pronto.				if(ajax.status == 200) {					var resultado = ajax.responseText; // Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado).					resultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos 					resultado = unescape(resultado); // Resolve o problema dos acentos					tag = 'recordCount';					initSub = resultado.indexOf('<'+tag+'>');					initTagLen = tag.length+2;					finiSub = resultado.indexOf('</'+tag+'>');					totalRecords = resultado.substring('<'+tag+'>'+initTagLen,finiSub);					document.getElementById('tr').innerHTML = totalRecords;					exibeResultado.innerHTML = resultado.substring(0,initSub);				} else {					exibeResultado.innerHTML = "Erro: ";				}			}		}			ajax.send(null); // submete	}}
isso deve resolver xD
Colega,Entendi a logica da sua solução mas js ainda nao é o meu forte (pretendo evoluir nesta vertente client-side).Alguma coisa falha pois dei um alert('totalRecords') e ele retornou o HTML de toda a pagina em vez do valor numerico....Sugestao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

errei ali... muda onde ta

totalRecords = resultado.substring('<'+tag+'>'+initTagLen,finiSub);
para

totalRecords = resultado.substring(initSub+initTagLen,finiSub);

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.