Ir para conteúdo

POWERED BY:

Arquivado

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

ZioNN

Ajax eliminando espaços em branco da string. Como resolver?

Recommended Posts

Bom dia a todos,

 

Estou fazendo um script de busca onde o usuário digita uma palavra-chave num campo de busca e o sistema retorna um drop-down preenchido com opções que combinam com a palavra-chave digitada.

 

Porém quando digito uma palavra chave composta, como por exemplo "joao carlos", a página asp que processa a busca o está recebendo como "joaocarlos", sem os espaços em branco, o que inviabiliza qualquer consulta.

 

O que pode estar acontecendo?

 

O script ajax é

 

function buscaAjax(termo_busca, divName)
{
	document.getElementById(divName).innerHTML = 'Aguarde! Localizando...';
	var busca = Trim(termo_busca);
	var buscaAjax = createXMLHTTP();
	buscaAjax.open("post", "ajax/ajax_busca.asp", true);
	buscaAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	buscaAjax.onreadystatechange=function(){
		if (buscaAjax.readyState==4){	
		  document.getElementById(divName).innerHTML = buscaAjax.responseText;
		  }
	}
	buscaAjax.send("busca=" + busca);
}

Já na página ASP que processa a busca tentei várias combinações de charset

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%'CODEPAGE=65001 'UTF-8 code%>
<%'CODEPAGE="1252"%>
<%'Response.Charset="UTF-8"%>
<%'Response.Charset="ISO-8859-1"%>

E nada funcionou.

 

A página com a função Ajax está com o charset definido assim

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

Agradeço a ajuda antecipadamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte:

alert( busca );
 buscaAjax.send("busca=" + busca);
oque a tua função Trim() faz?

var busca = Trim(termo_busca);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá William,

 

A função trim remove espaços em branco do início e final da string e sempre funcionou bem.

 

Veja:

 

function Trim(str){
	return str.replace(/^\s+|\s+$/g,"");
}

Imprimindo a variável busca na tela eu tenho exatamente a string que digitei.

 

Alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função trim remove espaços em branco do início e final da string e sempre funcionou bem.

 

Amigão, esse comportamento (remover os espaços do meio) está ocorrendo em todos os navegadores ?

 

Tente usar isso aqui:

String.prototype.trim = function(){
	for ( var i = 0 ; this.charCodeAt( i ) == 32 ; ++i );
	for ( var j = this.length - 1 ; this.charCodeAt( j ) == 32 ; --j );
	
	return this.substring( i , j + 1 );
}

function buscaAjax(termo_busca, divName)
{
 	document.getElementById(divName).innerHTML = 'Aguarde! Localizando...';
 	var buscaAjax = createXMLHTTP();
 	buscaAjax.open("post", "ajax/ajax_busca.asp", true);
 	buscaAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 	buscaAjax.onreadystatechange=function(){
 	if (buscaAjax.readyState==4){ 
 	document.getElementById(divName).innerHTML = buscaAjax.responseText;
 	}
 	}
 	buscaAjax.send([ 'busca' , termo_busca.trim()].join( '=' ));
}

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.