Ir para conteúdo

POWERED BY:

Arquivado

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

gmps

ajaxpage + acentos

Recommended Posts

galera, parece que nao estou conseguindo passar palavras com acentos no ajaxpage, eu tenho:

 

var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no) var loadedobjects="" var rootdomain="http://"+window.location.hostname function ajaxpage(url, containerid){ var page_request = false if (window.XMLHttpRequest) // if Mozilla, Safari etc page_request = new XMLHttpRequest() else if (window.ActiveXObject){ // if IE try { page_request = new ActiveXObject("Msxml2.XMLHTTP") } catch (e){ try{ page_request = new ActiveXObject("Microsoft.XMLHTTP") } catch (e){} } } else return false page_request.onreadystatechange=function(){ loadpage(page_request, containerid) } if (bustcachevar) //if bust caching of external page var bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime() page_request.open('GET', url+bustcacheparameter, true) page_request.send(null) } function loadpage(page_request, containerid){ if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)) document.getElementById(containerid).innerHTML=page_request.responseText } function loadobjs(){ if (!document.getElementById) return for (i=0; i<arguments.length; i++){ var file=arguments[i] var fileref="" if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding if (file.indexOf(".js")!=-1){ //If object is a js file fileref=document.createElement('script') fileref.setAttribute("type","text/javascript"); fileref.setAttribute("src", file); } else if (file.indexOf(".css")!=-1){ //If object is a css file fileref=document.createElement("link") fileref.setAttribute("rel", "stylesheet"); fileref.setAttribute("type", "text/css"); fileref.setAttribute("href", file); } } if (fileref!=""){ document.getElementsByTagName("head").item(0).appendChild(fileref) loadedobjects+=file+" " //Remember this object as being already added to page } } }

ai eu mando: ajaxpage('arq.php?l=Ação', 'div'); e parece que nao aceita acentos nao...

 

(nem manjo nada de js)

 

=/

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao amigo...eu passo o link por exemplo:ajaxpage('arq.php?nome=Ação', 'div');ai no arq.php eu tenho:$nome = $_GET["nome"];como que eu passo essas palavras via AJAX com acentos normais?!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao amigo...eu passo o link por exemplo:ajaxpage('arq.php?nome=Ação', 'div');ai no arq.php eu tenho:$nome = $_GET["nome"];como que eu passo essas palavras via AJAX com acentos normais?!!

Cara, tive este problema e a solução que encontrei foi receber o valor da variável no arquivo php com utf8_decode(), mas isto para o Firefox, para o IE, não precisou fazer a conversão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ajaxpage('arq.php?nome=Ação', 'div');

Vamos por partes:1) Isto não tem a ver com php.2) O endereço de uma url não aceita caracteres especiais. Ele utiliza uma codificação que troca alguns caracteres.Exemplo: espaço vira %20%Exemplo: ação vira a%E7%E3oPara testar outras letras e caracteres especiais, digite um endereço qualquer no navegador contendo a palavra.Exemplo: www.google.com/ação3) Como fazer então esta conversão de forma automática?Simples, use a função do javascript encodeURIComponent em suas variáveis (apenas em suas variáveis).

Compartilhar este post


Link para o post
Compartilhar em outros sites

ajaxpage('arq.php?nome=Ação', 'div');

Vamos por partes:1) Isto não tem a ver com php.2) O endereço de uma url não aceita caracteres especiais. Ele utiliza uma codificação que troca alguns caracteres.Exemplo: espaço vira %20%Exemplo: ação vira a%E7%E3oPara testar outras letras e caracteres especiais, digite um endereço qualquer no navegador contendo a palavra.Exemplo: www.google.com/ação3) Como fazer então esta conversão de forma automática?Simples, use a função do javascript encodeURIComponent em suas variáveis (apenas em suas variáveis).
Micox, seria uma boa idéia usar esta função, mas como é uma url, quando receber no php, os dados vão estar formatados e então o script não tem como receber os dados, já que, arquivo.php?dado=título&dado2=ação, seria enviado assim:arquivo.php%3Fdado%3Dt%C3%ADtulo%26dado2%3Da%A7%C3%A3o, se houver como receber estes dados no script php, me diga que também tive este problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa fazer absolutamente NADA no php.Isto é o padrão da web antes de inventarem o ajax.Você fez o teste que falei?Outro teste:Vá no google, digite "ação" e mande pequisar.Viu?? É assim desde os primórdios. Isso aí é apenas um simples urlencode.você não precisa usar nenhuma função especial no php pra recuperar isso ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa fazer absolutamente NADA no php.Isto é o padrão da web antes de inventarem o ajax.Você fez o teste que falei?Outro teste:Vá no google, digite "ação" e mande pequisar.Viu?? É assim desde os primórdios. Isso aí é apenas um simples urlencode.você não precisa usar nenhuma função especial no php pra recuperar isso ae.

É só que não consegui recuperar os dados no php, se estiver dispos to a me ajudar, baixe os arquivos e veja como fiz pra resolver, talves você me instrua em conseguir resolver de uma maneira adequada:o link: http://hcar.prophp.org/uploadImage.zip veja o arquivo alterar.php como tive de receber os dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tive tempo de baixar o arquivo.mas comé que está o código onde recebe a variável passada pelo GET?(por favor, sem códigos gigantescos, quero só a parte do PHP onde recupera a variável)http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

aqui no javascript
dados = 'alterar.php?titulo='+document.form_alterar.titulo.value+'&chamada='+document.		form_alterar.chamada.value+'&texto='+document.form_alterar.texto.value+'&id='+document.form_alterar.id.value+'&passo=2&ordem='+document.form_alterar.ordem.value;	if(navigator.appName == 'Microsoft Internet Explorer')	{		dados += '&browser=1';	}	else	{		dados += '&browser=2';	}	ajaxGet(dados,document.getElementById("acao"),true);
Aqui no script php
if(isset($_GET['titulo']) && isset($_GET['chamada']) && isset($_GET['texto'])					&& $_GET['titulo'] != '' && $_GET['chamada'] != '' && $_GET['texto'] != ''					&& isset($_GET['ordem']) && isset($_GET['id']) && isset($_GET['browser']) &&					$_GET['ordem'] != '' && $_GET['id'] != '' && $_GET['browser'] != '' )				{					//se browser for IE					if($_GET['browser'] == 1)					{						$titulo = anti_injection(trim($_GET['titulo']));						$chamada = anti_injection(trim($_GET['chamada']));						$texto = anti_injection(trim($_GET['texto']));						$ordem = anti_injection(trim($_GET['ordem']));						$id = anti_injection(trim($_GET['id']));					}					else					{						$titulo = utf8_decode(anti_injection(trim($_GET['titulo'])));						$chamada = utf8_decode(anti_injection(trim($_GET['chamada'])));						$texto = utf8_decode(anti_injection(trim($_GET['texto'])));						$ordem = utf8_decode(anti_injection(trim($_GET['ordem'])));						$id = utf8_decode(anti_injection(trim($_GET['id'])));					}
Dessa maneira como está funciona normalmente no ie e no FF, mas se eu por exemplo usar usar o 'encodeURIComponent' no javascript e depois enviar o formulário, aí o script php não dá certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) Que erro dá no PHP.

 

2) DEPOIS que me responder a pergutna 1, Troque isto

//se browser for IEif($_GET['browser'] == 1){$titulo = anti_injection(trim($_GET['titulo']));$chamada = anti_injection(trim($_GET['chamada']));$texto = anti_injection(trim($_GET['texto']));$ordem = anti_injection(trim($_GET['ordem']));$id = anti_injection(trim($_GET['id']));}else{$titulo = utf8_decode(anti_injection(trim($_GET['titulo'])));$chamada = utf8_decode(anti_injection(trim($_GET['chamada'])));$texto = utf8_decode(anti_injection(trim($_GET['texto'])));$ordem = utf8_decode(anti_injection(trim($_GET['ordem'])));$id = utf8_decode(anti_injection(trim($_GET['id'])));}
Por apenas isto:

$titulo = anti_injection(trim($_GET['titulo']));$chamada = anti_injection(trim($_GET['chamada']));$texto = anti_injection(trim($_GET['texto']));$ordem = anti_injection(trim($_GET['ordem']));$id = anti_injection(trim($_GET['id']));

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) Que erro dá no PHP.2) DEPOIS que me responder a pergutna 1, Troque isto

//se browser for IEif($_GET['browser'] == 1){$titulo = anti_injection(trim($_GET['titulo']));$chamada = anti_injection(trim($_GET['chamada']));$texto = anti_injection(trim($_GET['texto']));$ordem = anti_injection(trim($_GET['ordem']));$id = anti_injection(trim($_GET['id']));}else{$titulo = utf8_decode(anti_injection(trim($_GET['titulo'])));$chamada = utf8_decode(anti_injection(trim($_GET['chamada'])));$texto = utf8_decode(anti_injection(trim($_GET['texto'])));$ordem = utf8_decode(anti_injection(trim($_GET['ordem'])));$id = utf8_decode(anti_injection(trim($_GET['id'])));}
Por apenas isto:
$titulo = anti_injection(trim($_GET['titulo']));$chamada = anti_injection(trim($_GET['chamada']));$texto = anti_injection(trim($_GET['texto']));$ordem = anti_injection(trim($_GET['ordem']));$id = anti_injection(trim($_GET['id']));
É como falei, do jeito que postei não dá erro, o script funciona perfeitamente, mas se eu fizer da meneira 2 que você postou e não usar o 'encodeURIComponent', só funciona no IE, no FF não funciona, e se usar 'encodeURIComponent', aí não funciona nem no IE e nem no FF e o ajax me retorna que a página solicitada não foi encontrada.

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.