Receber JSON via JQUERY no GSP atualizando componente
28/07/2016 15:37
0
Bom dia pessoall :)Minha dúvida não é necessariamente sobre grails, mas creio ser algo bem simples.: Como exibir no gsp dados json vindos do controller? Explico o caso.:Meu controller basicamente devolve o JSON, que vem da pagina (params.cpf).:
def pesquisa(){?render(view:'adiciona', contentType:'application/json'){??cpf(cpf:params.cpf)?} } 
E tenho um código jquery para renderizar o dado vindo da pagina dentro de uma div simples como abaixo.:<div id='pesquisa'> </div>O meu codigo jquery .:$(document).ready(function() {?$("#formulario").submit(function(event){???var cpf = $("#cpf").val();???$.ajax({???method : "post",?dataType: "json",???url : "${createLink(action:'pesquisa', controller:'ordemServico')}",???data : {cpf:cpf},???success: function (data) {????$("#pesquisa").append(data);????}??});???event.preventDefault();?}); });Já tentei dentro do metodo append, colocar o objeto retornado pelo método pesquisa, no caso append("${cpf}"), entretanto nenhum meio funcionou.Alguém poderia me dar uma ajuda no que posso estar fazendo de errado?Obrigado
Tags: Grails, json, jquery, gsp


0
Pessoal me desculpem, o código jquery identado segue como abaixo.:

$(document).ready(function() {
?$("#formulario").submit(function(event){
var cpf = $("#cpf").val();
?
??$.ajax({
method : "post",
?dataType: "json",
url : "${createLink(action:'pesquisa', controller:'ordemServico')}",
data : {cpf:cpf},
success: function (data) {
?$("#pesquisa").append(data);?
}
??});
event.preventDefault();
?});
 
});
28/07/2016 15:38


0
Oi Marcio,

seguem alguns pontos: o primeiro deles é evitar ao máximo a geração de javascript dinâmicamente, tal como você faz neste trecho:


url : "${createLink(action:'pesquisa', controller:'ordemServico')}",


Como resolvo: eu coloco no layout principal da aplicação um campo do tipo hidden que contém o escopo da aplicação, tal como neste exemplo:


<head>
   <input type="hidden" id="context" value="${createLink(uri:'/', absolute:true)}"/>
</head>


E no código JavaScript, monto a minha URL assim:


url: $("#context").val() + 'ordemServico/pesquisa'


Isto te possibilita no futuro inclusive externalizar seu código JavaScript.

Se o valor que o seu JSON te retorna é um JSON, você pode fazer o seguinte:


$.ajax({
method : "post",
           dataType: "json",
url : "${createLink(action:'pesquisa', controller:'ordemServico')}",
data : {cpf:cpf},
success: function (data) {
?$("#pesquisa").append(JSON.stringify(data));
}
??})


JSON.stringify transforma seu objeto JSON em texto. Aí basta incluir lá o conteúdo. É isto?


0
Fale Kico! Obrigado pela resposta! Acompanho seus posts no site a um tempão hehehe :)

Na verdade não queria exibir o array todo como o método que você me mostrou faz, mas na realidade exibir somente o valor das chaves dentro dele... O código que voce me mandou ajudou sim... Consegui resolver na realidade fazendo simplesmente o seguinte.:

success: function (data) {
  var dicionario = data.cpf.cpfPesquisado;
  $("#resultado").empty();
  $("#resultado").append(dicionario);
}


Nao me toquei que na realidade o dado retornado é um object e que os valores podem ser acessados diretamente como fiz acima, taí uma lição aprendida hehehehehe :)

Em tempo e se me permite uma sugestão :) , vocês poderiam adicionar a opção de alterar o post original aqui no forúm... nao consegui fazer isso na primeira vez que postei a pergunta ou talvez tenha passado batido pela opção heheehehe...

Novamente obrigado pela ajuda Kico!
28/07/2016 20:44


0
Oi Márcio, que bom que foi útil!

Esta questão da edição do post/resposta vai estar disponível na próxima atualização do Grails Brasil!



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto