Ir para conteúdo
Fórum Script Brasil
  • 0

gerar javascript com json


Carlos Rocha

Pergunta

Tenho 2 Arrays:

Array
(
    [0] => Array
        (
            [0] => Amit
            [1] => amit@example.com
        )

    [1] => Array
        (
            [0] => Rahul
            [1] => rahul@example.com
        )

)

e

Array
(
    [0] => Array
        (
            [ProdutosidProduto] => 1
            [Produtostipo] => mp
            [Produtosmodelo] => F540 2 BAN.PNEU. 100 X 60
            [Produtosbandejas] => 2
            [Produtospeso] => 0
            [Produtosprensagem] => 0
            [ProdutosprecoUnitario] => 6500
            [Produtoscomprimento] => 100
            [Produtoslargura] => 60
            [Produtoscabo] => 0
            [Produtosligacao] => n
            [Produtospotencia] => 0
            [Produtosconsumo] => 0
            [Produtoscorrente] => 0
            [Produtosdisjuntor] => 0
            [Produtosdescricao] => 
Valor promocional limitado frete grátis ,para SP ,RJ ,MG ,ES. Os demais será cobrado apenas de SP para sua cidade ,valor de 500,00 ,a ser pago na entrega .

MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
            [Produtosestoque] => 7
            [ProdutosfreteGratis] => s
            [Produtosbloqueado] => n
        )

    [1] => Array
        (
            [ProdutosidProduto] => 2
            [Produtostipo] => mp
            [Produtosmodelo] => F540 2 BAN.PNEU.80X100 A VISTA BOLETO PAGSEGURO
            [Produtosbandejas] => 2
            [Produtospeso] => 190
            [Produtosprensagem] => 300
            [ProdutosprecoUnitario] => 7500
            [Produtoscomprimento] => 70
            [Produtoslargura] => 100
            [Produtoscabo] => 6
            [Produtosligacao] => b
            [Produtospotencia] => 7500
            [Produtosconsumo] => 3
            [Produtoscorrente] => 35
            [Produtosdisjuntor] => 40
            [Produtosdescricao] => MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
www.topuhrens.de


            [Produtosestoque] => 8
            [ProdutosfreteGratis] => n
            [Produtosbloqueado] => n
        )

    [2] => Array
        (
            [ProdutosidProduto] => 3
            [Produtostipo] => mp
            [Produtosmodelo] => (PROMOÇÃO )2 BAN.PNEU.80X100, VALOR PROMOCIONAL .
            [Produtosbandejas] => 2
            [Produtospeso] => 200
            [Produtosprensagem] => 300
            [ProdutosprecoUnitario] => 8990
            [Produtoscomprimento] => 80
            [Produtoslargura] => 100
            [Produtoscabo] => 6
            [Produtosligacao] => b
            [Produtospotencia] => 7500
            [Produtosconsumo] => 3
            [Produtoscorrente] => 35
            [Produtosdisjuntor] => 40
            [Produtosdescricao] => MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE replica watches for sale A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 

CONSUMO : 3 KW/H 

            [Produtosestoque] => 97
            [ProdutosfreteGratis] => n
            [Produtosbloqueado] => n
        )

Desejo transformá-los em JSON porém respeitando seus índices.

Com o primeiro array fiz:

var arr = <?php echo json_encode($myArr); ?>;

com o segundo fiz 

var res = <?php echo json_encode($produtos); ?>;

Bom, quando fui conferir o JSON que saiu, verifiquei que 
Para o primeiro Array temos que:

   document.write(arr[1][0]) => imprimiu Rahul;

Para o segundo Array, temos que:

   document.write(res[0]["ProdutosidProduto"]) => Imprimiu undefined;

Mas quando fiz:

   document.write(res) => imprimiu [object Object],[object Object]

   
O que estou fazendo de errado?

Se os Arrays são quase idênticos, onde está o erro?

Será fato de que um tem índices como palavras e outro índices numéricos?

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

fZe-e-hzQoON7dPnNhFCeQ.png

1 -> Array de arrays

2 -> Array de objetos

P.S.

Não acredito que seja uma boa prática, misturar php e javascript
uma vez que php é serverside e js é client side

eu faria o js ler uma url(que por acaso é um php entregando um json - mas poderia ser c, python, ruby, java, .net, nodejs, apenas texto, etc...)

Link para o comentário
Compartilhar em outros sites

  • 0

 

Concordo que não seja boa prática. 

Nem vou fazer assim no final pois vou separar JS de PHP.

Mas preciso passar objeto JSON diretamente sem precisar transformar o objeto em array para depois transformar em JSON.

Pois na hora da transformação do objeto em array, ao invés de os índices virem assim:

'meuIndice'

eles estão vindo assim:

[meuIndice]

Então o JSON não está lendo!

Link para o comentário
Compartilhar em outros sites

  • 0

Então, da forma abaixo o array gera corretamente:

  foreach ($todos as $cada):

     $produtos[] = array(
           'idProduto' => $cada->getIdProduto(),
           'tipo' => $cada->getTipo(),
           'modelo' => $cada->getModelo(),
           'bandejas' => $cada->getBandejas(),
           'peso' => $cada->getPeso(),
           'prensagem' => $cada->getPrensagem(),
           'precoUnitario' => $cada->getPrecoUnitario(),
           'comprimento' => $cada->getComprimento(),
           'largura' => $cada->getLargura(),
           'cabo' => $cada->getCabo(),
           'ligacao' => $cada->getLigacao(),
           'potencia' => $cada->getPotencia(),
           'cosumo' => $cada->getConsumo(),
           'corrente' => $cada->getCorrente(),
           'disjuntor' => $cada->getDisjuntor(),
           'descricao' => $cada->getDescricao(),
           'estoque' => $cada->getEstoque(),
           'freteGratis' => $cada->getFreteGratis(),
           'bloqueado' => $cada->getBloqueado()
              );    
           
  endforeach;

Mas o JSON só sai vazio

Link para o comentário
Compartilhar em outros sites

  • 0

Situação mudou, acho que consegui.

Mas agora o problema é outro.

Tenho um array($todos) de objetos($cada)  e o seguinte foreach:

      foreach ($todos as $cada):
       
         $produto[] = (array) $cada;
    
         $produtos[] = array(
               'idProduto' => $cada->getIdProduto(),
               'tipo' => $cada->getTipo(),
               'modelo' => $cada->getModelo(),
               'bandejas' => $cada->getBandejas(),
               'peso' => $cada->getPeso(),
               'prensagem' => $cada->getPrensagem(),
               'precoUnitario' => $cada->getPrecoUnitario(),
               'comprimento' => $cada->getComprimento(),
               'largura' => $cada->getLargura(),
               'cabo' => $cada->getCabo(),
               'ligacao' => $cada->getLigacao(),
               'potencia' => $cada->getPotencia(),
               'cosumo' => $cada->getConsumo(),
               'corrente' => $cada->getCorrente(),
               'disjuntor' => $cada->getDisjuntor(),
               'descricao' => $cada->getDescricao(),
               'estoque' => $cada->getEstoque(),
               'freteGratis' => $cada->getFreteGratis(),
               'bloqueado' => $cada->getBloqueado()
                  );    
               
      endforeach;


Preciso converter os arrays $produto e $produtos em JSON

Segue os PRINT_R() de ambos.

Esse é o PRINT_R do `Array` $produto:

   

Array
    (
        [0] => Array
            (
                [ProdutosidProduto] => 1
                [Produtostipo] => mp
                [Produtosmodelo] => F540 2 BAN.PNEU. 100 X 60
                [Produtosbandejas] => 2
                [Produtospeso] => 0
                [Produtosprensagem] => 0
                [ProdutosprecoUnitario] => 6500
                [Produtoscomprimento] => 100
                [Produtoslargura] => 60
                [Produtoscabo] => 0
                [Produtosligacao] => n
                [Produtospotencia] => 0
                [Produtosconsumo] => 0
                [Produtoscorrente] => 0
                [Produtosdisjuntor] => 0
                [Produtosdescricao] => 
    Valor promocional limitado frete grátis ,para SP ,RJ ,MG ,ES. Os demais será cobrado apenas de SP para sua cidade ,valor de 500,00 ,a ser pago na entrega .
    
    
    
    MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
                [Produtosestoque] => 7
                [ProdutosfreteGratis] => s
                [Produtosbloqueado] => n
            )
    
        [1] => Array
            (
                [ProdutosidProduto] => 2
                [Produtostipo] => mp
                [Produtosmodelo] => F540 2 BAN.PNEU.80X100 A VISTA BOLETO PAGSEGURO
                [Produtosbandejas] => 2
                [Produtospeso] => 190
                [Produtosprensagem] => 300
                [ProdutosprecoUnitario] => 7500
                [Produtoscomprimento] => 70
                [Produtoslargura] => 100
                [Produtoscabo] => 6
                [Produtosligacao] => b
                [Produtospotencia] => 7500
                [Produtosconsumo] => 3
                [Produtoscorrente] => 35
                [Produtosdisjuntor] => 40
                [Produtosdescricao] => MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
    www.topuhrens.de
    
    
    
    
                [Produtosestoque] => 8
                [ProdutosfreteGratis] => n
                [Produtosbloqueado] => n
            )

Esse é o `PRINT_R` do `Array` $produtos:

    Array
    (
        [0] => Array
            (
                [idProduto] => 1
                [tipo] => mp
                [modelo] => F540 2 BAN.PNEU. 100 X 60
                [bandejas] => 2
                [peso] => 0
                [prensagem] => 0
                [precoUnitario] => 6500
                [comprimento] => 100
                [largura] => 60
                [cabo] => 0
                [ligacao] => n
                [potencia] => 0
                [cosumo] => 0
                [corrente] => 0
                [disjuntor] => 0
                [descricao] => 
    Valor promocional limitado frete grátis ,para SP ,RJ ,MG ,ES. Os demais será cobrado apenas de SP para sua cidade ,valor de 500,00 ,a ser pago na entrega .
    
    
    
    MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
                [estoque] => 7
                [freteGratis] => s
                [bloqueado] => n
            )
    
        [1] => Array
            (
                [idProduto] => 2
                [tipo] => mp
                [modelo] => F540 2 BAN.PNEU.80X100 A VISTA BOLETO PAGSEGURO
                [bandejas] => 2
                [peso] => 190
                [prensagem] => 300
                [precoUnitario] => 7500
                [comprimento] => 70
                [largura] => 100
                [cabo] => 6
                [ligacao] => b
                [potencia] => 7500
                [cosumo] => 3
                [corrente] => 35
                [disjuntor] => 40
                [descricao] => MAQUINA TOTALMENTE INDUSTRIAL E 100% NACIONAL .PRODUÇÃO DE ATÉ MIL PÇS POR DIA EM HORÁRIO NORMAL DE TRABALHO ,SISTEMA DIGITAL AUTOMATIZADO DE ÚLTIMA GERAÇÃO , SISTEMA PNEUMÁTICO COMPACTO E UNIFORME RECEBENDO A MESMA PRESSÃO EM TODA ÁREA DE ESTAMPAGEM, EVITANDO ASSIM OS SOMBREAMENTOS E EFEITOS FANTASMA NA ESTAMPA , SISTEMA DE RESISTÊNCIA DE ALTA QUALIDADE A MELHOR DO MERCADO AÇO INOX 304 , DANDO UMA VIDA ÚTIL MUITO SUPERIOR AS DEMAIS DO MERCADO , E FÁCIL TROCAS DAS RESISTÊNCIAS NÃO SENDO NECESSÁRIO TÉCNICO NO LOCAL , COM APENAS 4 PARAFUSOS O CLIENTE MESMO FAZ A TROCA, AS DEMAIS A RESISTÊNCIA É FUNDIDA NA CHAPA DE ALUMÍNIO SENDO IMPOSSÍVEL A TROCA APENAS DAS RESISTÊNCIAS , TEMOS TODAS AS PÇS DA PRENSA EM VALORES BEM ACESSÍVEIS. 
    www.topuhrens.de
    
    
    
    
                [estoque] => 8
                [freteGratis] => n
                [bloqueado] => n
            )


Estou tentando assim

      var res1 =  Array(); 
      res1 = <?php echo json_encode($produto); ?>;
      document.write(res1[0]["ProdutosidProduto"])
    
      var res2 =  Array();
      res2 = <?php echo json_encode($produtos); ?>;
      document.write(res2[0]["idProduto"])  

no JS, o res2 sai perfeito. Mas o res1 sai undefined

Onde estou errando?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...