Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Preciso de uma ajuda para criar uma tabela com os dados que vierem do json.
php
function historico(){
$idchamado = $this->input->post("idchamado");
$this->load->model("chamado/chamado_model");
$consulta = $this->chamado_model->m_historico($idchamado);
if($consulta->num_rows() == 0){
die("Histórico não encontrado");
}
echo json_encode($consulta);
}
JS
function carregaTabelaJSon(idchamado){
$.post(base_url+'/index.php/chamado/chamado_controller/historico', {
idchamado: idchamado
}, function (data){
$('#nometecnico').val(data.nometecnico);
(....)
}, 'json');
Esse Js preenche apenas 1 campo. Eu queria que preenchesse todos, conforme a quantidade de dados do banco.
<td style="text-align: center;"><input type="text" class="form-control" id="nometecnico" name='nometecnico'></td>
Usei input porque ele não exibe nada no <td> ou <div> de eu tentar colocar o id em 1 desses. Mas isso é o de menos. Eu so queria saber como faz para listar todos os registros.>
você tem que fazer um loop e ir preenchendo item por item.
Não use IDs, use classes ou navegue no DOM com .parent e .find
Amigo,
Consegui chegar até aqui
function carregaTabelaJSon(idchamado){
$.post(base_url+'/index.php/chamado/chamado_controller/historico', {
idchamado: idchamado
}, function (data){
var items = [];
$.each(data, function(key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ul/>',{'class': 'listagem', html: items.join('')}).appendTo('body');
}, 'json');
}
<ul class="listagem"></ul>
Seguindo o que tu falou, ms ele n me lista nada.
está vindo um array do backend?
function (data){
console.log(data);>
está vindo um array do backend?
function (data){
console.log(data);
Está sim.
O back ta assim:
Controller
function historico(){
$idchamado = $this->input->post("idchamado");
$this->load->model("chamado/chamado_model");
$consulta = $this->chamado_model->m_historico($idchamado);
if($consulta->num_rows() == 0){
die("Chamado não encontrado");
}
echo json_encode($consulta);
}
Model
public function m_historico($idchamado = NULL) {
if($idchamado != NULL){
$this->db->select('*');
$this->db->from('historico');
$this->db->join('chamado', 'historico.chamado_fk = chamado.idchamado');
$this->db->where("chamado_fk", $idchamado);
}
return $this->db->get();
}
Eu dei o console.log(data);, ele n retornou em nd. Ms eu dei o alert, ele retornou null.
Estranho, pq se eu usar o $('#nometecnico').val(data.nometecnico);, ele preenche o campo 1 unica vez.
tem algo errado no teu backend ai.
force os cabeçalhos json, antes da saída
header('Content-Type: application/json');precisa retornar um array no console log, se não, você não vai conseguir fazer o que quer.
Nada cara! Mesmo forçando o json, o console.log nem aparece. O alert aparece no maximo [object : object] qnd eu seto um array na mão, ms tbm n serve d nd. Dei uma pesquisada sobre passar dados do php para o json, ms nd mt util. Se tu souber de algum tutorial que explique isso, criar uma tabela via json passado o Id como parâmetro, coloca o link ai p fvr.
você está vendo o console no Ctrl + Shift + J do Firefox ou Chrome? aba console?
tira um print para eu dar uma olhada, por favor.
Cara, ve se tu consegue acessar ai. Eu n descobri como posta aqui, direto no forum, ai subi para o google +.
Boa noite, Hisoka, eu estava com um problema similiar ao seu, no meu script também estava retornando um resultado, o que eu fiz para resolver este problema foi retirar o json_encode dentro das chaves, e colocar fora, isto deu certo para mim, não sei se dará certo para você, boa sorte.
Boa noite, Hisoka, eu estava com um problema similiar ao seu, no meu script também estava retornando um resultado, o que eu fiz para resolver este problema foi retirar o json_encode dentro das chaves, e colocar fora, isto deu certo para mim, não sei se dará certo para você, boa sorte.
Opa amigo, bom dia! Como assim? Pq o json_encode que eu uso fica com parenteses e não com chaves.
echo json_encode($consulta);
As únicas chaves que tem são as do método.
Amigos!!!
Estou mais perto do que nunca!!!
Veja, criei um foreach no php que ele me retorna todos os registros da consulta.
foreach($consulta -> result() as $linha){
$nome[] = $linha->nometecnico;
$email[] = $linha->emailtecnico;
$ramal[] = $linha->ramaltecnico;
$data[] = $linha->data;
$consulta = array(
"nometecnico" => $nome,
"emailtecnico" => $email,
"ramaltecnico" => $ramal,
"data" => $data
);
}
echo json_encode($consulta);
Então essa parte do php fechou.
Fiz um loop no jquery, e como o console.log n funciona nem com voodoo, foi na base do alert msm. Dei o alert, e ele me retornou corretamente todos os dados do php. A minha única dúvida é de como passo isso para uma tabela?
function carregaTabelaJSon(idchamado){
$.post(base_url+'/index.php/chamado/chamado_controller/historico', {
idchamado: idchamado
}, function (data){
var items = [];
$.each( data, function( key, val ) {
items.push( "<li id='" + key + "'>" + val + "</li>" );
alert(val);
});
$( "<ul/>", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo( "body" );
}, 'json');
}
Só falta isso amigos, por favor, me ajudem!! Só criar a tabela com esses dados.
Joga o valor do seu data em um for no javaScript e verifica se vem certinho os valores, ai é só montar dentro de uma tabela....
var obj = data;
for (i = 0; i < obj.length; i++){
alert(obj[i].id);
}function carregaTabelaJSon(idchamado){
$.post(base_url+'/index.php/chamado/chamado_controller/historico', {
idchamado: idchamado
}, function (data){
var buscarvalor = '';
for(var i in data['justificativa']){
buscarvalor += '<tr><td>' + data['justificativa'][i] + '</td></tr>';
}
$('.add-info').html(buscarvalor);
// console.log(data);
}, 'json');
}
Resolvi assim.
Obgd pessoal!
você tem que fazer um loop e ir preenchendo item por item.
Não use IDs, use classes ou navegue no DOM com .parent e .find