Jquery ajax UTF-8

8 respostas
D

Galera,
estou tendo um problema com o ajax do jquery que esta me tirando o sono.O problema é o seguinte, quando envio os dados para servidor eles estao indo com varios caracteres estranhos tipo ó quando uso os caracteres especiais ç ~ á o codigo é o seguinte:

jQuery.ajax({
    url: this.action,
    type: "POST",
    dataType:"html",
    cache: false,
    data: decodeURI(jQuery(this).serialize()),
    success: function(data, textStatus, XMLHttpRequest){
        	var pane = $("#overlay").overlay().getOverlay().find('#wrapOverlay').html(data);
    }

alguém sabe como posso resolver esse problema ?
Obs: estou usando struts 2.
Obrigado

8 Respostas

Abdon

Coloca este parametro:

contentType: "charset=ISO-8859-1"

nesta chamada

dentro do {} do metodo ajax do jquery

D

Valeu Ovelha,
mas infelizmente não deu certo descobri que o metodo ajax do jquery só envia os dados no padrão UTF-8 quando enviado no tipo POST troquei para GET e os dados foram enviados normalmente.
Valeu.

jQuery.ajax({  
    url: this.action,  
    type: "POST",  --troquei para GET
    dataType:"html",  
    cache: false,  
    data: decodeURI(jQuery(this).serialize()),  
    success: function(data, textStatus, XMLHttpRequest){  
            var pane = $("#overlay").overlay().getOverlay().find('#wrapOverlay').html(data);  
    }
caiomacedor

DnCam. Você fez mas algo, para que isso funcione? Cara estou a dois dias tentando resolver isso, e nada que eu faço dá certo. Ja estou pensando seriamente em mudar tudo aqui pra prototype. Acho que estou fazendo algo errado. Mas como é a primeira vez estou num projeto que usa JQuery, não estou achando onde. Vou colocar partes do meu codigo aqui pra que se alguem poder me ajudar. Vou continuar procurando a solução aqui tb. porque acho que se demorar mas a coisa vai ficar preta pra mim aqui na empresa kkkk.

includes dos js.
<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/ajax.js" [b]charset="ISO-8859-1"[/b]></script>
head dos JSPs
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Chamada Ajax
$.ajax({
		contentType: 'application/x-www-form-urlencoded; charset=ISO-8859-1',
		url: action,
		type: 'GET',
		//type: 'POST',
		dataType: 'html',
		cache: false,
		data: $(button.form).serialize(),
		forceSync: true,
		beforeSend: function(){
			ajaxLoadShow();
		},
		complete: function(){
			ajaxLoadHide();
		},
		success: function(response){
			$("#block-two").html(response);
		},
		error: function(jqXHR, textStatus, errorThrown){
			$('#block-one').html(jqXHR.responseText);
		}
	});
Já tentei um monte de formas, olhando a doc do JQuery e por dicas em forums e nada. Fico muito grato se alguem ai poder me ajudar.
A

Carinha, o problema aí está no serialize… Internamente no JQuery ele acaba chamando o métodos javascript encodeURI, que converte na marra os campos para UTF-8. Isto acaba gerando os tais caracteres estranhos.

Então, uma pergunta simples: porque você não usa UTF-8 na sua página de uma vez, ao inves de ISO-8859-1? É a solução mais rápida…

caiomacedor

Na verdade eu não pesquisei a fundo o motivo de usar ou não o UTF-8, Segue informações de algumas pessoas de foruns, onde dissem que se usar UTF-8 nunca vai funcionar os caracteres especiais como ‘é, ão, ç’ por exemplo.

caiomacedor

Gente, mexi tanto aqui que nem sei mas onde mexi pra corrigir o problema. Mas aparentemente foi colocar isso @CHARSET "UTF-8"; nos arquivos *.css Agora esta funcionando. Mas confeso que vou tirar um tempo pra estudar esses dois encoding, pois juro não entendi bem esse treco não. Não entendi quando e qual usar. Analisando aqui ve que em aguns lugares do projeto esta o UTF-8 e em outros esta o ISO-8859-1. Estou até com medo de mexer e dar rolo denovo. Vou criar um projetinho em casa pra estudar isso. Mas valew pessoal que tentou ajudar. muito obrigado.

davidbuzatto

O encoding dos dados que são enviados pelo servidor e o encoding da sua página (e do arquivo que ela está sendo salva!) precisam ser o MESMO.
Agora que ví… Tópico de 2010! :roll:

jsmontteiro

de 2010 e o pazinha de ouro ta aki o/ quebrando a kbeça

Criado 18 de outubro de 2010
Ultima resposta 11 de mar. de 2013
Respostas 8
Participantes 6