capturar apenas um div via ajax [dúvida]

292 views
Skip to first unread message

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 3:30:05 PM4/11/13
to ce...@googlegroups.com
$("#menu").change(function(){
$.ajax({
  type: "GET",
  url: "/perfil/"+$(this).val()+"/ajax",
 dataType:"html",  

  success:function(response){
 alert(response);
  $("#side_left").empty();
  $(response).filter("#menuFuncao").appendTo("#side_left");
 }
})
})

Pessoal, estou tentando pegar uma div que no caso é "#menuFuncao" a partir desse ajax, estou tentando como viram acima, alguem da uma luz.

vlw

Helio Frota

unread,
Apr 11, 2013, 3:32:50 PM4/11/13
to ce...@googlegroups.com
$("#menu").change(function(){
$.ajax({
  type: "GET",
  url: "/perfil/"+$(this).val()+"/ajax",
 dataType:"html",  

  success:function(response){
    console.log(document.getElementById("menuFuncao"));
})
})

O que isso mostra no console ?




--
Você está recebendo esta mensagem porque se inscreveu no grupo "CEJUG" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para cejug+un...@googlegroups.com.
Para postar neste grupo, envie um e-mail para ce...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Helio Frota
http://www.heliofrota.com/

Helio Frota

unread,
Apr 11, 2013, 3:33:09 PM4/11/13
to ce...@googlegroups.com
Instale o firebug p/ ver caso não tenha instalado

Efraim Gentil

unread,
Apr 11, 2013, 3:35:53 PM4/11/13
to ce...@googlegroups.com
esta lançando o alert ? ??
está limpando a div ? 

tente

$("#side_left").html( response );

se estiver usando o chrome tente
console.log("Response" , response );

response pode ser na verdade um objeto, e você precisa saber qual atributo desse objeto está contido a response
provavel que seja algo como responseText

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 3:46:14 PM4/11/13
to ce...@googlegroups.com
efraim cara o o alert que dei no respose como ta no primeiro post, tras a pagina html com o que eu quero que é isso:

   <div id="menuFuncao">
<option value="10">cadastrar</option>        
<option value="11">editar</option>        
<option value="12">excluir</option>        
<option value="56">atualizar</option>      
   </div>

ou seja, quero pegar essa div cujo id é menuFuncao. Coloquei a linha que vc disse ai mas deu certo não.

Date: Thu, 11 Apr 2013 16:35:53 -0300
Subject: Re: [CEJUG] capturar apenas um div via ajax [dúvida]
From: efraim...@gmail.com
To: ce...@googlegroups.com

Marcelo Rebouças

unread,
Apr 11, 2013, 3:48:33 PM4/11/13
to ce...@googlegroups.com
Gabriel,

Se sua div estiver identificada com o id="side_left" e você quer renderizar todo o retorno da função ajax, você pode utilizar o que o nosso amigo Efraim sugeriu, mas se você quiser concatenar o retorno de várias requisições, você pode usar o seletor dessa forma:

$("#side_left").append(response);

Seria melhor você postar sua estrutura HTML, onde encontra-se a div para melhor identificarmos seu problema.

Atenciosamente,

Marcelo Rebouças
(85) 8805-8234
Systems Analyst / Software Developer


"Se está muito difícil de encontrar o caminho, faça-o"

Marcelo Rebouças

unread,
Apr 11, 2013, 3:54:20 PM4/11/13
to ce...@googlegroups.com
Se você está querendo pegar alguma opção que esteja selecionada do option, você faz assim:

$('#menuFuncao')
- retorna div completa (objeto) com os filhos (options)
$('#menuFuncao option:selected') - retorna o objeto option selecionado
$('#menuFuncao option:selected').val() - retornar o value do objeto option selecionado



Gabriel Nobre de Souza

unread,
Apr 11, 2013, 3:54:46 PM4/11/13
to ce...@googlegroups.com
Marcelo Rebouças é o seguinte, a div menuFuncoes que esta em outra pagina que vem no formato html é justamente para popular a side_left que é uma especie de pickList, ou seja, com o resultado de menuFuncões que é a identificação da div na pagina carregaMenuFuncoes eu vou pega-la e colocar no pickList side_left.

deu pra entender ai. :D

vlw.




Date: Thu, 11 Apr 2013 16:48:33 -0300

Subject: Re: [CEJUG] capturar apenas um div via ajax [dúvida]

Rafael Alves

unread,
Apr 11, 2013, 4:00:14 PM4/11/13
to ce...@googlegroups.com
com $("#side_left").html(response); deve funcionar sem precisar limpar o side_left, se for limpar o que o Marcelo postou também está correto.

Afinal, qual erro no teu código, pois pra mim ele tb está correto !?


2013/4/11 Gabriel Nobre de Souza <gabrie...@hotmail.com>

Marcelo Rebouças

unread,
Apr 11, 2013, 4:02:45 PM4/11/13
to ce...@googlegroups.com
Posta tua estrutura HTML para melhor visualizar teu problema, pois dessa maneira como você especificou não ficou claro. Estou deduzindo uma série de fatores, dai o html ajudará a entender melhor o que realmente você pretende fazer.

Aguardo postagem.

Efraim Gentil

unread,
Apr 11, 2013, 4:04:17 PM4/11/13
to ce...@googlegroups.com
Acredito que o problema seja por ele está emcapsulando as <option> dentro de uma <div>

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 4:18:24 PM4/11/13
to ce...@googlegroups.com
cara ele não da erro mas tbm não acontece nada.

seguinte, vamos ao codigo:

//AJAX
$("#menu").change(function(){
$.ajax({
 type: "GET",
 url: "/perfil/"+$(this).val()+"/ajax",
 dataType:"html",  
 success:function(response){

 alert(response);
  //$("#side_left").empty();
 
  $(response).filter("div#menuFuncao").appendTo("#side_left");
 }
})
})
------------------------------------------------------------------------------------------------------------------------------
MENU: Sempre que este menu for alterado, o ajax é para entrar em ação, pois os menus, tem vairas funcoes.

<label for="menu">Menu:</label>
<select id="menu" name="menu.id" class="required">
<option value="">Selecione o menu</option>   
   <#list listaMenu as menu>     
                    <option value="${menu.id}">${menu.nome}</option>        
</#list>
</select>


MENU FUNCOES é aqui que o ajax vai enficar o codigo da resposta que ele pega, com as alterações do menu acima.
<label for="menuFuncao">Menu Função:</label>  
<fieldset class="block">
       <select name="funcoes" id="side_left" class="transicao" multiple ></select>
</fieldset>
---------------------------------------------------------------------------------------------------------------------------------------
CARREGA MENU FUNCAO é daqui que sai a resposta para o ajax.

<div id="menuFuncao">
<#list menuFuncoes as menuFuncao>     
<option value="${menuFuncao.funcao.id}">${menuFuncao.funcao.nome}</option>        
</#list>
</div>
-----------------------------------------------------------------------------------------------------------------------------------------

Espero que assim ajude vcs a me ajudar. :D

vlw galera. 


Date: Thu, 11 Apr 2013 17:04:17 -0300

Subject: Re: [CEJUG] capturar apenas um div via ajax [dúvida]

Marcelo Rebouças

unread,
Apr 11, 2013, 4:48:47 PM4/11/13
to ce...@googlegroups.com
Vamos lá, mas por partes, ok?

O retorno do seu ajax, está te retornando o que? Você já teve a convicção que ele está retornado o que se espera?

Se ele está retorando um valor qualquer, não vejo o porque do seguinte seletor não funcionar:

$('#side_left').html(retornoResponse);

Agora não ficou claro para mim essa função: CARREGA MENU FUNCAO.

Já já tem instalado o puglin firebug, que o Hélio sugeriu? Caso não, ele é uma arma essencial para desenvolvimento front-end.


Gabriel Nobre de Souza

unread,
Apr 11, 2013, 4:56:24 PM4/11/13
to ce...@googlegroups.com
Cara é o seguinte,

1° - o retorno do ajax é um html que nele contem a div que eu espero, no caso menuFunções
2 - o carrega menu funcao é a view que tem a div.
3 -  tenho sim o plugin instalado.

vou testar aqui denovo.


Date: Thu, 11 Apr 2013 17:48:47 -0300

Marcelo Rebouças

unread,
Apr 11, 2013, 4:58:54 PM4/11/13
to ce...@googlegroups.com
Li as postagem sobre o que vem no alert. Você não pode agregar uma estrutura html de um <select> colocando uma <div> juntamente com os options. O Efraim citou isso no último post dele. Até onde etendi,  você está fazendo a seguinte inclusão depois do retorno do ajax:


<label for="menuFuncao">Menu Função:</label>  
<fieldset class="block">
       <select name="funcoes" id="side_left" class="transicao" multiple >
           <div id="menuFuncao">
                <option value="10">cadastrar</option>        
                <option value="11">editar</option>        
                <option value="12">excluir</option>        
          <option value="56">atualizar</option>      
          </div>
       </select>
</fieldset>
Até onde sei, essa <div> não é aceita como filha da tag <select>

Veja se é isso memso.

Helio Frota

unread,
Apr 11, 2013, 5:00:32 PM4/11/13
to ce...@googlegroups.com
Show galera, a participação aqui tá massa tomei um susto quando cheguei em casa e vi a quantidade de emails nessa ajuda !

Tem que ser assim mesmo mandando bala !

Marcelo Rebouças

unread,
Apr 11, 2013, 5:01:21 PM4/11/13
to ce...@googlegroups.com
Pod crer Hélio... madando chumbo grosso..rsrsr

Marcelo Rebouças

unread,
Apr 11, 2013, 5:01:46 PM4/11/13
to ce...@googlegroups.com
mandando*

Helio Frota

unread,
Apr 11, 2013, 5:03:31 PM4/11/13
to ce...@googlegroups.com
Galera escondendo o ouro aí com Javascript !

Quando eu tiver um buxo já sei o que fazer então vou encher o saco perguntando aqui no CEJUG

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 5:09:26 PM4/11/13
to ce...@googlegroups.com
acho que entendi, com a div que coloquei ele está colocando a div entre o select e o option e isso não pode,

blz, tirei aqui, mas com o ajax dessa forma dessa forma: 

$("#menu").change(function(){
$.ajax({
 type: "GET",
 url: "/perfil/"+$(this).val()+"/ajax",
 dataType:"html",  
 success:function(response){

  $("#side_left").empty();
  alert($('#side_left').html(response));
 }
})
})


so me vem isso no alert    [object Object]


Date: Thu, 11 Apr 2013 18:01:46 -0300

Marcelo Rebouças

unread,
Apr 11, 2013, 5:13:42 PM4/11/13
to ce...@googlegroups.com
Isso está sendo retornado porque dentro do alert, vc está fazendo uma seleção com o jquery.
Faça assim para dar um alert no respose:

alert(response)

e assim para renderizar o response na sua estrturua html:

$('#side_left').html(response)


Você pode coloar um break point dentro do seu código javascript e debugá-lo assim como é feito no java.

Vê ai o que acontece agora.

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 5:16:24 PM4/11/13
to ce...@googlegroups.com
as, eu já tinha tentado por sessa forma $('#side_left').html(response);e nada aconteceu, a proposito essas aspas obrigatoriamente tem que ser dupla?

vou tentar debugar aqui,.

vlw


Date: Thu, 11 Apr 2013 18:13:42 -0300

Helio Frota

unread,
Apr 11, 2013, 5:17:25 PM4/11/13
to ce...@googlegroups.com
Pode ser simples mesmo, não precisa ser dupla.

O legal é manter um padrão.

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 5:17:44 PM4/11/13
to ce...@googlegroups.com
blz.


Date: Thu, 11 Apr 2013 18:17:25 -0300

Subject: Re: [CEJUG] capturar apenas um div via ajax [dúvida]

Marcelo Rebouças

unread,
Apr 11, 2013, 5:17:54 PM4/11/13
to ce...@googlegroups.com
Aspas simples ' ou duplas " o jquery irá entender sem problemas. Eu nunca tiver problemas com isso.
Você retirou as divs dos options?

Marcelo Rebouças

unread,
Apr 11, 2013, 5:21:05 PM4/11/13
to ce...@googlegroups.com
Só um detalhe, sempre que estiver desenvolvendo para o front-end, especificamente javascript, é boa prática sempre limpar o cache do browser para manter a consistência do que você está implementando de novo. As vezes o browser mantem o chache e fica fazendo referência a funções javascript não atualizadas.

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 5:21:23 PM4/11/13
to ce...@googlegroups.com
sim retirei, mas as div's eu tinha colocado, na view que serve para mandar a resposta para o ajax e nela tem apenas isso agora:


<#list menuFuncoes as menuFuncao>    
        <option value="${menuFuncao.funcao.id}">${menuFuncao.funcao.nome}</option>       
</#list>

assim com a div que vc se refere:


<div id="menuFuncao">
    <#list menuFuncoes as menuFuncao>    
            <option value="${menuFuncao.funcao.id}">${menuFuncao.funcao.nome}</option>       
    </#list>
</div>


Date: Thu, 11 Apr 2013 18:17:54 -0300

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 5:23:42 PM4/11/13
to ce...@googlegroups.com
a blz eu estou atualizando aqui com ctrl + F5


From: gabrie...@hotmail.com
To: ce...@googlegroups.com
Subject: RE: [CEJUG] capturar apenas um div via ajax [dúvida]
Date: Fri, 12 Apr 2013 00:21:23 +0300

Gabriel Nobre de Souza

unread,
Apr 11, 2013, 5:26:05 PM4/11/13
to ce...@googlegroups.com
P. nada resolveu, ele não popula o pickList ao selecionar um menu no combo, :(


From: gabrie...@hotmail.com
To: ce...@googlegroups.com
Subject: RE: [CEJUG] capturar apenas um div via ajax [dúvida]
Date: Fri, 12 Apr 2013 00:23:42 +0300

Marcelo Rebouças

unread,
Apr 11, 2013, 5:33:54 PM4/11/13
to ce...@googlegroups.com
Qualquer uma das opções que é escolhida, seu ajax retorna algum valor?
Tem que debugar com o firebug para ter melhor conhecimento do que está ocorrendo.

Faz assim, coloca essa tag apenas para teste:
<div id="resultadoAjax">
</div>


e coloca seu retorno para esse id:
alert(response);
$('#resultadoAjax').html(response);

dai veja o que retornou no seu alert e se ele renderizou algo nessa div.

Não vejo o porque não renderizar nada, caso seu response estive vindo populado e de forma correta.
Teste...

Evaldo Junior

unread,
Apr 11, 2013, 6:30:53 PM4/11/13
to ce...@googlegroups.com

Cara, usa o console.log no developer tools do chrome ou no firebug do firefox. Tu vai poder ver direitinho o teu retorno em vez de usar alert e so ter como retorno um object.

Marcelo Rebouças

unread,
Apr 11, 2013, 11:10:33 PM4/11/13
to ce...@googlegroups.com
Pois é, concordo plenamente com o Evaldo.
Caso queira e seja preciso obter mais detalhes do firebug, olha esse link:
http://www.youtube.com/watch?v=Ql7RFkZid_I

Vlw!

George Mayko

unread,
Apr 12, 2013, 8:01:51 AM4/12/13
to ce...@googlegroups.com
Pra galera que está começando agora com desenvolvimento web, principalmente quem trabalha diretamente com o front-end. Esse curso foi lançado há cerca de um mês e certamente vai ajudar a quem ainda não sabe como utilizar o dev tools do google chrome ou simplesmente quer confirmar o que já sabe. No meu caso serviu pra eu expandir meus conhecimentos. =D



George Mayko

unread,
Apr 12, 2013, 8:04:22 AM4/12/13
to ce...@googlegroups.com
Deixo claro que não estou fazendo merchandising. Estou apenas compartilhando algo que achei muito interessante da mesma forma que compartilhei com todos os meus colegas de trabalho. =D

Helio Frota

unread,
Apr 12, 2013, 8:20:13 AM4/12/13
to ce...@googlegroups.com
Eu ainda não sei usar o "dev tools do google chrome" é melhor que o firebug ? Tem haver com o firebug ?

Alguém mais poderia endossar esse dev tools ? Tem pra chromium ?

O jeito é testar ... Vlw


--
Você está recebendo esta mensagem porque se inscreveu no grupo "CEJUG" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para cejug+un...@googlegroups.com.
Para postar neste grupo, envie um e-mail para ce...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

George Mayko

unread,
Apr 12, 2013, 8:28:45 AM4/12/13
to ce...@googlegroups.com
Helio ele é bem parecido com o firebug, podemos dizer que é concorrente do firebug mas em outra plataforma. Possui possibilidade alterações diretamente em propriedades de html e css, console e debug de javascripts, análise de transferencia de resources, consumo de memória dos objetos do javascript, análise de perforamace (fps) em anições javascript, possibilidade de utilizar um local storage para simular uma resposta do servidor por exemplo um json, etc. Já vem nativo no google chrome e salvo engano também está presente do chromium. Faça o curso ai não é longo e certamente todas essas suas duvidas serão respondidas.

Helio Frota

unread,
Apr 12, 2013, 8:38:42 AM4/12/13
to ce...@googlegroups.com
Já vem nativo no google chrome e salvo engano também está presente do chromium

ahhhh esse eu conheço : ] é o que eu chamo de "Firebug do croma"

Valeu



Gabriel Nobre de Souza

unread,
Apr 12, 2013, 9:06:18 AM4/12/13
to ce...@googlegroups.com
Ola Efraim Gentil, Helio Frota, Marcelo Rebouças e todos que me ajudaram,

Consegui resolver aqui, como?
O problema era que com a resposta vinham todo o html do decorator, e o ajax não reconheci isso, pelo ao menos foi o que eu conclui aqui.

No decorator tentei dar um exclude na pagina que vinha a resposta e não deu certo.

Então eu criei uma pagina vazia e disse la no decorator que a pagina que vem a resposta iria vir com o padrão da nova pagina, ou seja, vazia, então deu certinho.

galera vlw ai pela ajuda.

Gabriel Nobre.


From: mayko....@gmail.com
Date: Fri, 12 Apr 2013 09:28:45 -0300

Subject: Re: [CEJUG] capturar apenas um div via ajax [dúvida]
Reply all
Reply to author
Forward
0 new messages