Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, vi muitos códigos como este:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="exemplo.js"></script>
<title>Exemplo</title>
</head>
<body>
<button>Clique aqui</button>
</body>
</html>
//Quando o Documento HTML estiver carregado
jQuery(document).ready(function(){
//Ao clicar em um elemento do tipo button
jQuery("button").click(function(){
//Requisição Ajax
jQuery.ajax({
url: "pagina.php", //URL de destino
dataType: "json", //Tipo de Retorno
success: function(json){ //Se ocorrer tudo certo
var msg = "Nome: " + json.nome + "\n";
msg += "Sobrenome: " + json.sobrenome + "\n";
msg += "Idade: " + json.idade;
alert(msg);
}
});
});
});
<?php
$arr = array(); //Declaração da variável array
//Atribuição dos valores na posição correspondente no array
$arr['nome'] = "Evandro";
$arr['sobrenome'] = "Balmant";
$arr['idade'] = 25;
$arr['macho'] = true;
/**
* OBS.: Uma requisição AJAX recebe como retorno tudo o
* que você escreve no lado do servidor, portanto não
* fazemos um return e sim um echo ou print.
*/
//A função json_encode() converte um array para o formato JSON
echo json_encode($arr);
?>
Na maioria dos exemplos o fluxo é: html->js->php o que eu quero fazer é o oposto... eu tenho um script php q pega dados do banco e converte para json e preciso pegar com js para criar dashboards com plotly.js ...minha dúvida: Qual melhor forma de se fazer, atual, que frameworks usam, etc?
Vi em stakoverflow nego falando em Var variavelJs = <?php print($json); ?>; mas creio que isso seja errado, ia fazer com curl mas os dois arquivos estão no meu projeto...ou seja...tenho um controller que instacia a model com dados, o controller precisa mandar para a view esse json para construir os dashboards...Alguma dica?Outra dúvida rápida Gabriel..não sei o seu conhecimento sobre frameworks...quando se da um loadController load->view etc....o que ele faz realmente? um require_once/include da vida?
Sobre este tópico ainda:(só pra esclarecer, meu mvc e framework eu mesmo criei), fluxo da aplicação: view login(só html/ form) action para controller -> controller/login(aqui eu tenho uma porrada de funções, criptografia, curl rest, etc) ->controller /dashboard.php (se neste arquivo eu tiver um echo json_encode($data) obviamente vai printar na tela o que eu não quero, preciso passar seguindo os principios do MVC para a view dashboard onde estou usando plotly.js para gerar gráficos e estatisticas..
estive pensando... ao passar do login controller direcionar para view/dashoboard e nela abrir requisição ajax...no dashoboard.php trato como rest e dou print...seria certo?
Depende muito do framework, mas no geral são simliares do file_get_contents. Mas podem usar include/require.
Há uma explicação minha sobre templates utilizando apenas bibliotecas nativas do PHP.
http://forum.imasters.com.br/topic/536201-mvc-paginas-dinamicas/?p=2141430
Se for observar, eu não uso include/require. Mas, utilizo:
$dom->loadHTMLFile("source/para/template.php");
Que é similar ao file_get_contents. O template lido, os parâmetros são interpretados e, então, é realizado o output do HTML.
echo $dom->saveHTML();
Se não houvesse a interpretação, seria apenas include/require.
Se eu fizer o seguinte:
<?php
ob_start();
include('template.html');
$template = ob_get_contents();
ob_end_clean();
/ interpretação do template /
echo $template;
Seria a mesma coisa que eu fiz com file_get_contents(), mas utilizando include.
---
PS.: Complementei a resposta anterior antes de ver o seu post.
Se é a melhor maneira não sei.
mas funciona certinho aqui,
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
//Logo ao carregar o Jquery ativa
$.ajax({
url: 'clientes.php'
,type:'GET'
,dataType: 'json'
,success: function(json){
//console.log(json.clientes);
$.each(json.clientes, function() {
console.log(this.id);
console.log(this.nome);
});
}
,error: function(json){
console.log(json);
}
});
});
</script>
</body>
</html>
clientes.php
<?php
header ('Content-type: application/json; charset=UTF-8'); //Importante pois o JSON é UTF-8
$clientes = array(
array(
'id' => 1
,'nome' => 'Evandro'
,'sobrenome' => 'Balmant'
,'idade' => '22'
,'macho' => true
)
,array(
'id' => 2
,'nome' => 'Gabriel'
,'sobrenome' => 'Darezzo'
,'idade' => '23'
,'macho' => true
)
);
print json_encode(array('clientes' => $clientes));O interessante de desenvolver em cima de 'chamadas'
A alteração do Layout por nenhum momento precisa se alterar a saida dos dados e sim apenas reagrupar as mesmas.
Fica até mais fácil integração com plataformas diferentes.
Então
gabrieldarezzo Mas isso muda o fluxo do mvc..no meu ponto de vista é claro...mas tbm posso fazer assim login view -> login controller -> if (tudoCerto()) -> dashboard view -> AJAX -> dashboard controller
>
O que você pode fazer de "diferente", que não é tão diferente assim, é construir a aplicação em REST.
Você terá seu MVC em PHP, e o MVC em JavaScript. A View ainda deve existir, pois tanto model quanto controller não podem, e nem devem, gerar output.
Já no JavaScript, você terá o Controller, que irá requisitar ao Model (que é a aplicação em PHP) e irá repassar para a view, que montara tudo que for necessário no DOM.
Não entedi Gabriel, como posso requisitar se não terá um echo ou print?
Eu não disse que não terá echo, alias, deve ter, é um tipo de output. Apenas explanei outra arquitetura de desenvolvimento, a qual é tendência.
>
Então
gabrieldarezzo Mas isso muda o fluxo do mvc..no meu ponto de vista é claro...mas tbm posso fazer assim login view -> login controller -> if (tudoCerto()) -> dashboard view -> AJAX -> dashboard controller
Sim, muda, pois não é mais MVC é arquitetura REST (RESTful).
você tem algum artigo já seguindo rest como arquitetura? Consigo e posso unir "jeitos"/arquiteturas diferentes?
é q durante a explicação rolou o dialogo de vcs.
Minha ideia responder só o trecho.
>
Na maioria dos exemplos o fluxo é: html->js->php o que eu quero fazer é o oposto... eu tenho um script php q pega dados do banco e converte para json e preciso pegar com js para criar dashboards com plotly.js ...minha dúvida: Qual melhor forma de se fazer, atual, que frameworks usam, etc?
Eu sou meio 'contra' dar um echo no meio de um script.
Sei lá.
Se você quiser passar dados do PHP para JavaScript durante o carregamento do DOM, a opção do stack overflow é a mais indicada.
Por que? PHP foi concebido para ser misturado com o HTML (isso inclui CSS e JavaScript). Apesar da evolução do PHP, sua essência não mudou e a mistura continua fazendo parte do "cerne" no PHP.
Todas as situações que você encontrará para passar o JSON do PHP para JavaScript vão involver alguma forma de output (echo, print, printf, etc...);
Por que não utilizar a maneira mais direta, rápida e, de qualquer forma, adequada?
O que você pode fazer de "diferente", que não é tão diferente assim, é construir a aplicação em REST.
Você terá seu MVC em PHP, e o MVC em JavaScript. A View ainda deve existir, pois tanto model quanto controller não podem, e nem devem, gerar output.
Já no JavaScript, você terá o Controller, que irá requisitar ao Model (que é a aplicação em PHP) e irá repassar para a view, que montara tudo que for necessário no DOM.