Jump to content
Fórum Script Brasil
  • 0

JSON com PHP


Leovip

Question

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

Edited by Leovip
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

fala brother...

vou postar do jeito que fiz uma vez... dando um post pra uma página php usando ajax/jquery e ela retorna uma array com encode em json em um sistema de callcenter que como era muita requisição tive de usar ajax e tal e também tive dificuldade fuçando e pesquisando consegui da seguinte forma...

somente exemplo... não ta o código original mas a idéia é a mesma...

#Página PHP que processa o post (processa.php)

<?
  //você pode pegar o post do AJAX aqui
  $parametro1 = $_POST["parametro1"]; //Script
  $parametro2 = $_POST["parametro2"]; //Brasil

  $result = array();
  $result["apelido"] = "Churc";
  $result["forum"] = "Script Brasil"; //pagação
  $result["email"] = "cebasso at gmail .com";
  $result["data"] = "01/03/1984";

  echo json_encode($result);
?>
#Pagina que da o post pra página acima e processa o resultado quebrando as arrays por chaves
function quebraArray(chave, valor)
{
  var buff = '';
  switch (chave)
    {
    case 'apelido':
    alert('O apelido é ' + valor);
    break;
    case 'forum':
    alert('O fórum é ' + valor);
    break;
    case 'email':
    alert('O email é ' + valor);
    break;
    case 'data':
    buff = valor.toString();
    var arr_buff = buff.split('/');
    alert('Dia ' + arr_buff[0] + ' Mês ' + arr_buff[1] + ' Ano ' + arr_buff[2]);
    break;
    }
}

function processaArray(arr, retorno)
{
  for (var k in arr)
    {
        if ($.isArray(arr[k]) || ((typeof arr[k] == 'object') && (arr[k] !== null)))
            processaArray(arr[k], retorno);
        else
          retorno(k, arr[k]);
      }
}

$.ajax(
    {
    url: "processa.php", //pagina la de cima...
    data: 'parametro1=Script&parametro2=Brasil',
    type: 'post',
    success: function(json)
      {
      var dados = eval('(' + json + ')');
      processaArray(dados, quebraArray);
      }
    }
  ); //$

ve se te ajuda...

abrx

Edited by Churc
Link to comment
Share on other sites

  • 0

quando você coloca porcentagem na sua query json, você perde o intuito do json, transformando em uma simples string

veja como você deve criar este json na internet, e uso os metodos nativos do php para ler json

como o json_decode, e se estiver usando jquery pode usar o json() do jquery.

<?php
// Recebe uma string no formato JSON
$usuario = "{ nome: 'Fulano da Silva', ativo: true, nascimento: '2009/05/12' }";
$meuUsuario = json_decode($usuario, true);
echo $meuUsuario['nome']; // Fulano da Silva
echo $meuUsuario['nascimento']; // 2009/05/12
?>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...