print json on the pure javascript screen

1

I have this json structure:

"[{
"nome":["fulano 1","fulano 2","fulano 3","fulano 4"],
"site":["sitefulano1.html","sitefulano2.html.html","sitefulano3.html","sitefulano2.html"]}]"

Gero it this way with php and pdo mysql:

<?php
$valorV1 = count($v1);

for($col = 0; $col <= $valorV1-1; $col++) {
$autores['nome'][] = $v1[$col]['value'];
$autores['site'][] = $v2[$col]['site'];
}
  echo json_encode([$autores]);
?>

The problem I want to put the json data on the screen and I can not, does anyone know how to solve it?

I tried some examples that did not work:

function trataResposta(requisicaoAjax) {
    if(requisicaoAjax.readyState == 4) {
      if(requisicaoAjax.status == 200 || requisicaoAjax.status == 304) {    
            var dados = requisicaoAjax.responseText;
            alert(dados);

//tentei = 

var jsonObj = JSON.parse(dados);
  for (var i=0; i < jsonObj.length; i++){   
      alert(jsonObj[i]);   
  }       

    for (var i=0; i < autores.dados.length; i++) { //vai passar por todos os objetos dentro do array
     document.getElementById('insere_aqui').innerHTML = dados[i]["nome"];
     document.getElementById('insere_aqui').innerHTML = dados[i]["site"];
    }


      }
    }
}

When I tried this way the example works but with my json coming from the bank it does nothing!

var Ex01 = {"indice":"valor","nome" : "Silas Stoffel"}

  for (var index in dados ) {   
      alert(index + ': ' + Ex01[index]);   
  }       

Another question is how do I put a name on json like this? In the case book, how do I do this with php and mysql?

{ "livro" :{
    "titulo" : "Construindo sites com CSS e (X)HTML",
    "autor" : "Maurício",
    "site" : "http://livrocss.com.br"
    }
} 

I was writing an object in the console when I opened the little icon,

Object
nome
:
"fulano1"
site
:
"sitefulano1.html"
__proto__
:
Object
1
:
Object
nome
:
"fulano2"
site
:
"sitefulano2.html"
__proto__
:
Object
2
:
Object
nome
:
"fulano3"
site
:
"sitefulano3.html"
__proto__
:
Object
3
:
Object
nome
:
"fulano4"
site
    
asked by anonymous 03.04.2016 / 20:45

3 answers

1

Just like you do with PHP, you do with javascript, prefer the console to the place of alert() . If you press the F12 key in Chrome, it will open its console, in the tab "console" there is the output of the structure of your data. so to see if there is an exit, just make a console.log(dados); .

Using a jQuery library , you make it easier to create a manual ajax request, which requires many more that this structure of methods you did, actually a correct ajax structure would look something like this:

function CriaRequest() { 
  try { 
   var request = new XMLHttpRequest();
  } catch (IEAtual) {
    try { 
      var request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(IEAntigo) {
      try {
         var request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(falha) {
         var request = false;
      }
    }
  }
 if (!request) {
    alert("Seu Navegador não suporta Ajax!");
 } else {
   return request;
}

function getDados() {
  // Declaração de Variáveis
 var nome = document.getElementById("txtnome").value;
 var result = document.getElementById("Resultado");
 var xmlreq = CriaRequest();
 // Exibi a imagem de progresso
 result.innerHTML = '<img src="Progresso1.gif"/>';
   // Iniciar uma requisição GET ou POST
 xmlreq.open("GET", "Contato.php?txtnome=" + nome, true);
   // Atribui uma função para ser executada sempre que houver uma mudança de ado 
     xmlreq.onreadystatechange = function() {
       // Verifica se foi concluído com sucesso e a conexão fechada (readyState=4)
         if (xmlreq.readyState == 4) {
            // Verifica se o arquivo foi encontrado com sucesso
            if (xmlreq.status == 200) { 
                result.innerHTML = xmlreq.responseText; 
            } else {
              result.innerHTML = "Erro: " + xmlreq.statusText; 
            } 
         }
     };
xmlreq.send(null);
}

Now, we'll save lines using jQuery:

1) Include the library, if you wish you can use CDN:

<script type="text/javascript" src="https://code.jquery.com/jquery-latest.min.js"></script>

2)usetherequestmethod:$.ajax(),createamethodtoreadyourpost:

functionenviarDados(dados){//aestruturadedadosenviadospodeserumjson,exemplo:{"chave1":"valor1", "chave2":"valor2"};
    $.ajax({
        type: 'POST',
        url: URL,
        async: true,
        cache: false,
        dataType : "json",
        data: dados,
        success: function(jsonData)
        {
          //jsonData é o objeto de retorno do método (já em json)

           //para ler seu dados, você tanto pode converter tudo em uma string:
           document.body.innerHTML = JSON.stringify(jsonData, false,'    ');
           //como pode decidir fazer um loop no objeto:

           for (var i in jsonData) {
                for (var y in jsonData[i].nome) {
                    //saída é fulano1, fulano2 ...
                    console.log(jsonData[i].nome[y]);
                }
           }

        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
          alert('Erro: '+errorThrown+"\nna requisição: "+XMLHttpRequest+"\nStatus: "+textStatus);

        }
    });

$(funcion() {
  enviarDados('{chave1:valor1}');
});

Here is another example , working with JSON.

    
04.04.2016 / 21:32
1

You are generating json in the wrong way. Try this:

array $autores(
    'nome' => $v1[$col]['value'],
    'site' => $v2[$col]['site']
)

echo json_encode([$autores]);

If it does not work with '= >' try with ':' I can not remember which one is the correct one.

I do not understand what you want to do in the second doubt.

    
03.04.2016 / 22:00
1

Going by the simplest:

function imprimirJSON(json) {
  console.log(JSON.stringify(json));
}

And the call you make by:

imprimirJSON(meuJSON);
    
07.11.2016 / 16:34