Ir para conteúdo

POWERED BY:

Arquivado

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

Leovip

[Resolvido] JSON com PHP

Recommended Posts

Galera depois de pesquisar em muitos fóruns sem sucesso eu decidi mostrar meu problema para vocês para tentar uma resolução.

 

Bem, eu estou enviando um JSON de um arquivo PHP para outro através do método POST, neste formato "{"data","12/04/2012"}", e quando recebo ele no outro arquivo e decodifico para tornar um objeto ocorre dois problemas:

 

1- Cada parâmetro do JSON fica com símbolos de porcentagem no início e no final.

2- E quando é a data informada no JSON de exemplo ele apaga os dois primeiros caracteres, retornando somente ('/04/2012').

 

Uma da minhas tentativas foi no lugar de enviar os dados com JSON, construir uma string com os parâmetros no formato de url ('nome=teste&data=12/04/2012') e enviar via POST e acessando esses valores pela varíavel global $_POST, porém o problema persistiu e o meu código ficou mais complicado.

 

Eu já li muito sobre problemas com essa transição dos dados(problemas de codificação), porém todas as resoluções ainda não me trouxeram resultados positivos.

 

Ps.: Os dados estão sendo enviados via AJAX - Jquery

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentou usar utf8_encode() ou utf8_decode()?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentou usar utf8_encode() ou utf8_decode()?

 

Cara eu tentei usar ambos porém não obtive resultado positivo.

Nas minhas últimas tentativas os números que antes desapareciam agora aparece o seguinte caracter além do símbolo de porcentagem, a data digitada foi 14/12/2012.

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

no seu arquivo javascript/html o chartset esta como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no seu arquivo javascript/html o chartset esta como?

 

Shini o js que cria o JSON é um arquivo .js, tem como eu definir um charset no JS?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim e não.

 

Não porque você não define propriamente dito o charset, e sim ao salvar o arquivo você escolhe o charset que será usado.

 

Para quem visualiza o código é indiferente, mas para o editor e para browser tem diferença.

 

Agora o SIM é porque você pode na tag <script> definir um atributo charset que força o dito cujo para aquele script.

 

Alguns navegadores tem problemas em entender o charset e assumem o padrão que nem sempre é o UTF-8. Dessa forma, você instrui a fazer a coisa certa.

 

Se não resolver, poste como você gera o JSON, como você recebe e como o faz transitar até a decodificação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim e não.

 

Não porque você não define propriamente dito o charset, e sim ao salvar o arquivo você escolhe o charset que será usado.

 

Para quem visualiza o código é indiferente, mas para o editor e para browser tem diferença.

 

Agora o SIM é porque você pode na tag <script> definir um atributo charset que força o dito cujo para aquele script.

 

Alguns navegadores tem problemas em entender o charset e assumem o padrão que nem sempre é o UTF-8. Dessa forma, você instrui a fazer a coisa certa.

 

Se não resolver, poste como você gera o JSON, como você recebe e como o faz transitar até a decodificação.

 

Pow cara valew pela ajuda só que eu não consegui ainda resolver o problema, vou tentar mostrar como eu estou gerando os códigos:

 

1- Para gerar o JSON eu uso esse código que está em um arquivo JS:

 

JSONbuscaString = '{';
for(var j in busca)
{
     if(count != 0){
JSONbuscaString += ',"'+j+'":"'+busca[j]+'"';
     }else{
       JSONbuscaString += '"'+j+'":"'+busca[j]+'"';
     }
     count++;
}
JSONbuscaString += "}";

 

No código citado a variável busca é um JSON que será percorrido e conforme os parâmetros encontrados monta a string.

 

Depois que é construído o JSON eu o envio para o PHP através do método POST:

 

$.ajax({
   type:"POST",
   data: "JSONbusca="+JSONbuscaString,
   url: "teste.php",
   success: function(result){
       $("#paginacao").html(result);
  }
}

 

No PHP eu recebo através de uma variável e a decodifico em objeto PHP:

 

$json = $_POST['dadosBusca'];
$JSONbusca = json_decode($json);

 

Agora eu posso acessar como objeto PHP, porém com aquela restrição de acentuação.

 

Valew pela atenção ai galera ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo... Parece tudo certo.

 

Supondo que a forma como você monta o JSON está correta, experimente codificar/decodificar em UTF8 com PHP a string obtida OU construir o JSON de forma já convertida.

 

Para isso você pode usar os equivalentes PHP em JavaScript: utf8_decode() e utf8_encode()

Compartilhar este post


Link para o post
Compartilhar em outros sites

você disse no primeiro post q esta fazendo o json no php, como esta fazendo? ja usou as funcoes nativas de json?

 

json_encode e json_decode?

 

http://br2.php.net/manual/pt_BR/function.json-encode.php

http://br2.php.net/manual/pt_BR/function.json-decode.php

 

$json = $_POST['dadosBusca'];
$JSONbusca = json_decode($json);

 

Eu estou usando essa forma de conversão, recebo a variável com o JSON via POST e decodifico usando a função json_decode do php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

jSON é utf8 por padrão.

O documento está codificado em utf8 ?

 

leia:

http://wbruno.com.br/2011/04/19/problemas-acentuacao-ajax-como-resolver/

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.