Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, beleza?
Seguinte, estou começando a usar JQuery.Ajax para gravar infos no banco de dados, porém estou enfrentando dois problemas:
O primeiro tem a ver com a quantidade de texto que mando salvar.. se mando muito texto, o JQuery da erro e não termina a requisição.
E o segundo problema é que, quando cadastro pouco texto, ele salva, porém troca todos os acentos, cedilhas e afins para caracteres especiais...
Segue meu código para facilitar o entendimento:
<script src="../js/jquery-1.5.1.min.js"></script>
<script language="javascript">
$(document).ready(function(){
var action = $('form').attr('action');
$('form').attr('action','javascript:void(0);');
$('form').submit(function(){
//
dados = "action=gravar";
dados += "&id="+QueryString("codigo");
dados += "&tit="+document.getElementById("txttitulo").value;
dados += "&txt="+document.getElementById("txttexto").value;
dados += "&data="+document.getElementById("calendario").value;
//
$.post(action, dados, function(data){
alert("Deu Certo!");
});
return null;
});
});
</script>
<form name="form1" id="form1" method="post" action="ajax_press.asp">
Titulo:
<input name="txttitulo" id="txttitulo" type="text" class="form" size="58" value="">
<p>
Data:
<input name="calendario" id="calendario" type="text" class="form" value=""/>
<p>
Texto:
<input name="txttexto" id="txttexto" type="text" class="form" value=""/>
<p>
<input type="submit" class="form" name="gravar" id="gravar" value=" Gravar " />
</form>
Não sei pq está acontecendo isso, e não faço a mínima de como resolver..
Alguém já teve esses problemas e pode me dar uma força??
Vlw galera!
Abs
Prompt
Legal JCMais, obrigado pelo retorno!
Segui seus toques e consegui fazer a inserção das informações no banco de dados perfeitamente.
Só tem um problema que até agora não consegui resolver.. Os acentos e afins ainda estão sendo substituidos por caracteres especiais..
Texto de exemplo:
A palavra INSTITUIÇÕES é gravada como INSTITUIÇÕES..
Você falou em codificar antes de enviar, mas isso é referente ao serialize correto? Ou preciso codificar o texto de alguma forma antes de mandar?
Como fazer isso?
Obrigado novamente pela ajuda!
Abs,
Prompt
Olá prompt, isso já é problema do BD, verifique se você está salvando como UTF-8 e se a tabela em que os dados estão inseridos está com collation utf8 também.
Se for mysql, no momento de inserir você pode setar a codificação que deseja efetuar a transação definindo:
SET NAMES 'utf8';
Ou usando a função do PHP http://php.net/manual/pt_BR/mysqli.set-charset.php
E você pode mudar a codificação atual da tabela usando:
ALTER TABLE tabela DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Cumprimentos.
Olá prompt, como o "JCMais - FLF" disse, verifique se as codificações estão corretas. Faça um teste sem ajax primeiro, faça uma inserção sem ajax para ver se var inserir corretamente se sim, o problema está na requisição, então force o asp a setar a codificação correta.
<% Response.Charset="ISO-8859-1" %>
Mude a codificação para a codificação correta.
douglash, no caso é melhor usar UTF-8, para evitar possiveis problemas. ;)
Se estiver usando PHP, o equivalente ao que o douglash citou é:
header('Content-type: text/html; charset=utf-8');
Lembre-se de usar isto no topo do arquivo.
>
douglash, no caso é melhor usar UTF-8, para evitar possiveis problemas. ;)
Se estiver usando PHP, o equivalente ao que o douglash citou é:
header('Content-type: text/html; charset=utf-8');
Lembre-se de usar isto no topo do arquivo.
Fala Pessoal, beleza?
Obrigado a todos pela ajuda, porém encontrei um detalhe na documentação do JQuery.ajax(); que invalida as soluções que estão apresentando..
"When sending data to the server, use this content-type. Default is "application/x-www-form-urlencoded", which is fine for most cases. If you explicitly pass in a content-type to $.ajax() then it'll always be sent to the server (even if no data is sent). Data will always be transmitted to the server using UTF-8 charset; you must decode this appropriately on the server side"
O que precisarei então é uma forma de decodificar o texto com ASP de UTF-8 para ISO-8859-1 antes de gravar no banco...
Sei que aqui não é forum certo, mas alguém sabe como resolver isso?
Irei abrir um post no Forum de ASP para ver se resolvo isso e posto aqui para vocês ok?
Abs e, mais uma vez, obrigado pela força!
Prompt
E por que, ao invés de decodificar para ISO, você não passa a usar o UTF-8 como codificação padrão do seu projeto? Iria evitar muitas dores de cabeça... :mellow:
Concordo com o JCMais - FLF, será bem melhor para seu projeto se você o UTF-8 como codificação padrão do seu projeto. Eu citei o ISO-8859-1 como padrão dos caracteres latinos, mas o melhor e correto seria utilizar UTF-8.
eu pessoalmente não concordo com essa de 'correto usar tal'.
vários projetos meus, são apenas para brasileiros. ISO é uma especificação muito boa.
dá uma olhada aqui, @prompt:
http://www.wbruno.com.br/blog/2011/04/19/problemas-acentuacao-ajax-como-resolver/
Sim Bruno, porém eu digo se ele estiver planejando dá uma alavancada no projeto dele e internacionalizar o mesmo, melhor efetuar a mudança agora, do que ter que ficar editando arquivo no futuro, é apenas uma conselho pessoal, de alguém que já passou por isso. :lol:
Sucesso.
>
E por que, ao invés de decodificar para ISO, você não passa a usar o UTF-8 como codificação padrão do seu projeto? Iria evitar muitas dores de cabeça... :mellow:
Sim JCMais - FLF, essa é uma solução, porém terei que recadastrar todos os textos do banco de dados, pois, do contrário, os outros caracteres é que são substituidos por um "quadradinho"..
Ai caio no mesmo problema de antes..
Abs,
Prompt
>
eu pessoalmente não concordo com essa de 'correto usar tal'.
vários projetos meus, são apenas para brasileiros. ISO é uma especificação muito boa.
dá uma olhada aqui, @prompt:
http://www.wbruno.com.br/blog/2011/04/19/problemas-acentuacao-ajax-como-resolver/
Opa William, tudo bem?
Obrigado pela força, seu blog é bem bacana, já tinha lido alguns posts nele e está de parabéns!
Enfim, mesmo assim, a solução que você expõe lá está em PHP, muito bom, porém preciso disso para usar no ASP..
Resumindo, pelo que entendo disso, preciso da função compatível no ASP da utf8_encode. Estou certo?
preciso da função compatível no ASP da utf8_encode. Estou certo?
como teu ajax ta enviando em utf, e você vai gravar em iso.
creio que você precise da correspondente a uft_decode().
faça alguns testes.
Ai pessoal, encontrei a resposta para o que estávamos discutindo nesse post.
Na verdade, pelo que pude ver na internet não existe uma funções semelhantes às do PHP no ASP, que fazem o Encode ou Decode do Charset de uma string.
Como a solução é em ASP e não cabe nesse forum, postei no forum de ASP e coloco o link aqui a baixo como referência para os amigos que estiverem no mesmo apuro que eu passei:http://forum.imasters.com.br/topic/431268-converter-string-no-formato-utf-8-para-iso-8859-1-antes-de-gravar-no-banco/page__gopid__1702520#entry1702520
"Espero ajudar muitos como tantos já me ajudaram"
Abs,
Prompt
Recomendo a você usar a função serialize() do jquery para transformar os dados do seu formulário no formato ideal para url's, o problema com acento é que você está enviando sem codificar eles antes.
E retire
Ficando:
Ex: http://jsfiddle.net/Skhap/
Cumprimentos. ;)