Codificação com Ajax + Jquery + Spring [RESOLVIDO]

5 respostas
D

Olá,
Estou tendo problemas no envio de informações através de ajax com Jquery para meu controller...
Tentei de todas as maneiras forçar utf-8, mas sempre acaba chegando com algum problema.

Segue o código do Ajax

var data = $("#propertyForm").serialize();

$.ajax({
    url: url, 
    dataType:"html",
    cache: false,
    data: data,
    contentType: "text/html;charset=utf-8",  
    scriptCharset: "utf-8",
    success: function(html) 
    {		
    $('#ajaxReturn').html(html);
        //searchObject('');
    },
     error:function (xhr, ajaxOptions, thrownError)
    {
        $('#ajaxReturn').html('<p>Error '+xhr.status+': '+thrownError+'</p>');
    }

Se eu envio algo como 'ãàáâçª º' no controller chega 'ãà áâçª º'...
O Spring já está sendo forçado a usar utf-8 com:

<init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
</init-param>

Qualquer ajuda é válida, visto que já tentei de tudo...

Obrigado

5 Respostas

L

Mostra a importação desse JS no seu html.

Como está?

M

Você acessa direto pelo appserver ou acessa via algum virtualhost do apache?

Eu tive problema parecido quando acessava pelo apache.

Se for o caso verifica o charset do apache

D

Não é importado, está na página..

O import do jquery está assim:
<script type="text/javascript" src="<c:url value='/js/jquery.min.js'/>" charset="utf-8"></script>

O código serializa o form como deve ser,
id=&name=&value=&_applicationsIds=1&type=&description=%C3%A3%C3%A0%C3%A1%C3%A2%C3%A7%C2%AA+%C2%BA
O valor de description antes de ser serializado é: ãàáâçª º

Também tentei passar diretamente o valor, como em:
id=&name=&value=&_applicationsIds=1&type=&description=ãàáâçª º

Mas acontece o mesmo, acredito que seja alguma configuração do Spring, algo assim...

Lembro que hoje ele está assim:

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
D

Adicionei a seguinte linha no server.xml

<StaticInterceptor listing="true" useAcceptLanguag="true" useCharset="UTF-8"/>

E sigo com o mesmo problema…

D

Depois de muito procurar, descobri como resolver, mas ainda não entendo bem qual o problema…
Estou usando JQuery para fazer o ajax…
Coloquei isto:

contentType: ‘application/x-www-form-urlencoded; charset=UTF-8’

e funcionou

:smiley:

Criado 4 de agosto de 2011
Ultima resposta 5 de ago. de 2011
Respostas 5
Participantes 3