Ir para conteúdo

Arquivado

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

wesleymoser

Problemas com acentos no Ajax

Recommended Posts

Porque Acontece isso ... Quando mando a função lista na minha comboBox, ele mostra todos os acentos desta forma.....não sei oque pode ser....., acontece quando mando atualizar a combo.... e entre pela primeira vez no sistema não acontece o problema.....

<script language="javascript" type="text/javascript">var req;function loadXMLDoc_cidade(url,valor){ req3 = null; // Procura por um objeto nativo (Mozilla/Safari) if (window.XMLHttpRequest) { req3 = new XMLHttpRequest(); req3.onreadystatechange = processReqChange_cidade; req3.open("GET", url+'?categoria='+valor, true); req3.send(null); // Procura por uma versao ActiveX (IE) } else if (window.ActiveXObject) { req3 = new ActiveXObject("Microsoft.XMLHTTP"); if (req3) { req3.onreadystatechange = processReqChange_cidade; req3.open("GET", url+'?categoria='+valor, true); req3.send(); } }}function processReqChange_cidade(){ // apenas quando o estado for "completado" if (req3.readyState == 4) { // apenas se o servidor retornar "OK" if (req3.status == 200) { // procura pela div id="atualiza" e insere o conteudo // retornado nela, como texto HTML document.getElementById('cidade_div').innerHTML = req3.responseText; } else { alert("Houve um problema ao obter os dados:\n" + req3.statusText); } }}function Atualiza_cidade_hotel(valor) { x = 1; if(x<=1) { loadXMLDoc_cidade("atualiza_cidade_hotel.php?cidade_div="+valor,true); } else { alert("Reinicie o Cadastro, ocorreram muitas requisições do servidor "); }}</script>

essa é a função, ele simplesmente retorna no valor para a mesma combo... fazendo com que atualize-se sempre que eu clicar nela....Quem puder essa, por favor me ajude..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tivesse lido direito e entrado no link que mostrei, iria ver o seguinte:

 

if(ajax.readyState == 4) {	   if(ajax.status == 200) {		 var texto = ajax.responseText;		 texto = texto.replace(/\+/g," ");		 texto = unescape(texto);		 document.getElementById("txtnome").value = texto;	   } else {		 alert(ajax.statusText);	   }	 }

Este trecho

var texto = ajax.responseText;		 texto = texto.replace(/\+/g," ");		 texto = unescape(texto);
faz a decodificação dos tais caracteres que você mencionou e coloca os caracteres certos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

function processReqChange_cidade(){ // apenas quando o estado for "completado" if (req3.readyState == 4) { // apenas se o servidor retornar "OK" if (req3.status == 200) { var texto = req3.responseText; texto = texto.replace(/\+/g," "); texto = unescape(texto); // procura pela div id="atualiza" e insere o conteudo // retornado nela, como texto HTML document.getElementById('cidade_div').innerHTML = req3.responseText; } else { alert("Houve um problema ao obter os dados:\n" + req3.statusText); } }}

///// rotina de atualização de combobox require_once('../config/conection.php'); require_once('../js.js'); require_once('js/cidade_hotel.js'); // Conexão do Banco de Dados $connection = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); mysql_select_db($db_nome,$connection) or die(mysql_error()); echo "<select name=\"cidade_combo\" id=\"cidade_combo\" span class=\"fonte3\">"; echo "<option value=\"\">ESCOLHA</option>"; //busca dados na combo $query_cidade = "SELECT nome_cidade FROM cidade ORDER BY nome_cidade ASC"; $list_cidade = mysql_query($query_cidade, $connection) or die(mysql_error()); //$list_linha_cidade = mysql_fetch_assoc($list_cidade);?> <? while($list_linha_cidade=mysql_fetch_array($list_cidade)) { ?> <option value=" <? echo(urlencode($list_linha_cidade['nome_cidade']));?>"><b><? echo(urlencode($list_linha_cidade['nome_cidade']));?></b></option> <? } ?> </select> <? echo "<a href=java script:popup_cidade()><span class=\"fonte\">Incluir | </span> <a href=\"java script:Atualiza_cidade_hotel(this.value)\"><span class=\"fonte2\"> Atualizar</span></a><span class=\"mensagem\"> *</span> "; ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, olha como eu faço...

Quando vou trabalhar com selects, ai invés de receber o select todo pelo ajax, eu pego só os valores que eu quero...

Por exemplo... para pegar estados a página me retorna algo assim:

 

neof#MG_Minas+Gerais;SP_S%064o+Paulo;RJ_Rio+de+Janeiro#foen

 

Na minha aplicação ajax, eu pego dos dados lá:

...		 var texto = ajax.responseText;		 texto = texto.replace(/\+/g," "); //substitui os + por espaços		 texto = unescape(texto); //decodifica		 texto = texto.substring(texto.indexOf('neof#')+5, texto.indexOf('#foen')); //pega o contéudo que está entre neof# e #foen		 var vetEstados = texto.split(';'); //separa os estados colocando em um vetor		 if (vetEstados.length > 0) {		   //Remove todos os itens do select caso haja ao menos 1		   if (document.getElementById('estado').options.length > 0) {			 for (y = 0; y < document.getElementById('estado').options.length; y++) 			   document.getElementById('estado').options.remove(y);		   }		   //insere os novos valores		   for (var i=0; i < vetEstados.length; i++) {			 var estadoSplited = vetEstados.split('_'); //separa sigla do nome pelo hífem			 var sigla = estadoSplited[0];			 var nome = estadoSplited[1];			 opcao = document.createElement("option");			 document.getElementById('estado').options.add(opcao);			 opcao.innerText = sigla;			 opcao.value = nome;		   }		 }...

Funciona sem problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara desculpe a minha insistência mas não to conseguinte inserir este teu código no meu.....tá complicado mesmo fazer issoooo o Ajax parece fácil.... mas não é..... hhahahahhahahahaha

<script language="javascript" type="text/javascript">// Busca cidade para a tabela de hotelvar req3;function loadXMLDoc_cidade(url,valor){ req3 = null; // Procura por um objeto nativo (Mozilla/Safari) if (window.XMLHttpRequest) { req3 = new XMLHttpRequest(); req3.onreadystatechange = processReqChange_cidade; req3.open("GET", url+'?categoria='+valor, true); req3.send(null); // Procura por uma versao ActiveX (IE) } else if (window.ActiveXObject) { req3 = new ActiveXObject("Microsoft.XMLHTTP"); if (req3) { req3.onreadystatechange = processReqChange_cidade; req3.open("GET", url+'?categoria='+valor, true); req3.send(); } }}function processReqChange_cidade(){ // apenas quando o estado for "completado" if (req3.readyState == 4) { // apenas se o servidor retornar "OK" if (req3.status == 200) { var texto = req3.responseText; texto = texto.replace(/\+/g," "); texto = escape(texto); //texto = texto.substring(texto.indexOf('neof#')+5, texto.indexOf('#foen')); //var vetEstados = texto.split(';'); // procura pela div id="atualiza" e insere o conteudo // retornado nela, como texto HTML document.getElementById('cidade_div').innerHTML = req3.responseText; } else { alert("Houve um problema ao obter os dados:\n" + req3.statusText); } }}function Atualiza_cidade_hotel(valor) { x = 1; if(x<=1) { loadXMLDoc_cidade("atualiza_cidade_hotel.php?cidade_div="+valor,true); } else { alert("Reinicie o Cadastro, ocorreram muitas requisições do servidor "); }}</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu caro wesley... Eu consegui a solução do seu problema!!!qdo você for mandar em php a string pro ajax você coloca o a seguinte função htmlentities(string);funciona kra pq eu tive o mesmo problema q você!!!um abraço kra!!!!

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.