Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rdpacato

Combobox preencher input text do BD ao selecionar

Recommended Posts

Pessoal,

 

Quero quando selecionar um valor no combobox, trazer valores do BD e preencher os campos input text... estou usando JSP (Java):

 

 

 

Não manjo muito de ajax, mas acho que é algo assim né?;

 

 

 

 

A lista de veículos já consigo preencher vindo do servlet...

<c:import url="ServletVeiculo" />
<c:set var="listaVeic" 
value="${requestScope.listaVeiculo}" 
/>
<select name="veiculo" id="VeicSelecionado" style="width:172px;" >
<option value="0"selected="selected">VEICULO</option>
<c:forEach var="listasVeic" items="${listaVeic}">
<option value="${listasVeic.veiculo}">${listasVeic.veiculo}</option>  
</c:forEach>
</select>

Mas agora quero ao selecionar um item eu consulte no BD através da servlet e preencher os input text

var dataVeiculo ={"veiculo":'${veiculo}'};
$.ajax({
type : "POST",
url: "ServletEditarDados",
data: dataVeiculo,
success: function(response)
{
//Preencher os inputs com o response(JSON ou XML)
}
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, pode ser por ai.

 

Qual a dúvida?

 

exemplo:

http://wbruno.com.br/ajax/combobox-preenche-input-ajax/

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que não sei me conectar ao banco com ajax, mesmo olhando seu exemplo em php fico confuso, não estou conseguindo compreender essa parte de comunicação...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajax não conecta no banco.

 

Quem fará isso é a sua linguagem server-side. No caso o Java.

Eu fiz com php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

me expressei mal.. é a comunicação com o servlet... tipo chamar ele como mostrei no primeiro post... ou se é do jeito que vc colocou no seu exemplo? só trocando o direcionamento de function.php para o nome do servlet...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, exato.

 

Só troque o function.php para a url do seu servlet

Uma que vc consiga acessar no browser, exemplo:

 

localhost:8080/servletTal

 

vc vai colocar no script:

 

url: "servletTal",

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wiliam me desculpe a ignorância.. mas não estou conseguindo entender a parte do json...

var dataVeiculo ={"veiculo":'${veiculo}',"loginUsuario":'${loginUsuario}'};
$(document).ready(function(){
	
			$("select[name='veiculo']").change(function(){
				var placa = $("input[name='placa']");

				$( placa ).val('Carregando...');

	 
					$.getJSON(
							'ServletEditarDados',
							dataVeiculo,
						{ idCliente: $( this ).val() },
						function( json )
						{
							$( placa ).val( json.placa );
							
						}
					);
			});
		});

Pq preciso mandar o veiculo e o login para consultar no BD, mas parece que nem no servlet ta entrnado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

function( json ){
   console.log(json);
aperte Ctrl + Shift + J no Chrome ou Firefox e olhe no console o retorno, para vc entender.

 

Fora isso, vc precisa trocar:

$( placa )
pelo seletor correto:

$('#placa')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não chega nem a entrar... da erro Uncaught ReferenceError: $ is not defined no $(document).ready(function(){

 

está certo essa maneira de enviar os valores, por este dataString?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, o datastring está errado tb.

Esse erro "$ is not defined".. quer dizer q tem algo errado com a importação da lib jQuery.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tinha esquecido de colocar o js

<script src="js/jquery.min.js"></script>

 

 

Como eu passaria? agora ele apresenta a mensagem Carregando.. mas não entrou ainda no servlet

Compartilhar este post


Link para o post
Compartilhar em outros sites

var dataVeiculo ={"veiculo":'${veiculo}',"loginUsuario":'${loginUsuario}'};
troca por
var dataVeiculo = {"veiculo": $('#veiculo').val(),"loginUsuario": $('#usuario').val()};
assumindo que veiculo e usuário são inputs.

 

Onde estão os dados que vc quer mandar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

os dados estão na session... dessa maneira que eu estava usando consegui mandar assim:

$.ajax({
			type : "POST",
			url: "ServletEditarDados",
			data: dataVeiculo,
			success: function(response)
			{
			   //Preencher os inputs com o response(JSON ou XML)
			}
			});

mas neste caso atual, precisa ser diferente o tratamento pq é onchange e não no post...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se os dados estão na session, pegue pelo servlet e não no js.

 

onchange é um evento da página

post é um verbo http

 

são 2 coisas completamente diferentes. Não fez sentido o que vc disse.

Explique melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi malz....

 

O que quero dizer é que não é após dar submit, é no onchange...

 

na verdade só o login ta na session...

 

O Outro vou pegar do combo... mas acho que da para pegar do jeito que me ensinou agora... vou testar e depois posto aqui:

 

 

 

 

 

 

 

William... não sei pq não está enviando o veiculo... manda null ou 0...

		var dataVeiculo ={"veiculo": $('#VeicSelecionado option :selected').val(),"loginUsuario":'${loginUsuario}'};
		$(document).ready(function(){
	
			$("select[name='veiculo']").change(function(){
				var placa = $("input[name='placa']");
				$.ajax({
					type : "POST",
					url: "ServletEditarDados",
					data: dataVeiculo,
					success: function(response)
					{
					   //Preencher os inputs com o response(JSON ou XML)
						$( placa ).val('Carregando...');
						$.getJSON(
								'ServletEditarDados',
							{ idCliente: $( this ).val() },
							function( json )
							{
								$( '#placa' ).val( json.placa );
								
							}
						);
					   
					   
					}
					});

			});
		});

 

 

É um combo dinâmico... ele mostra o valor certo na combo, então o valor ta la.. mas não consegui pegar ele...:

								<select name="veiculo" id="VeicSelecionado" style="width:172px;">
									<option value="0"selected="selected">VEICULO</option>
									<c:forEach var="listasVeic" items="${listaVeic}">
										<option value="${listasVeic.veiculo}">${listasVeic.veiculo}</option>  
									</c:forEach>
								</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

William... peguei os dados do combo... enviei para o servlet... peguei os dados do bd.. mas ai vem o meu problema JSON... não sei como passar os valores para o json, ou ao menos pegar do atributo...

		$(document).ready(function(){
	
			$("select[name='veiculo']").change(function(){
				var dataVeiculo = {"veiculo": $(this).val(),"loginUsuario":'${loginUsuario}'};	
				var placa = $("input[name='placa']");
				$.ajax({
					type : "POST",
					url: "ServletEditarDados",
					data: dataVeiculo,
					success: function(response)
					{
						$( placa ).val('Carregando...');

						var dadosRetorno = {"placa":'${placa}'};
						var objJSON = jQuery.parseJSON(dadosRetorno);

						$.getJSON('objJSON', function(data) {
						          $('#placa').html(data.placa)}
						);
						
						alert('${placa}');
					   
					}
					});

			});
		});

Tentei assim, que vi em site.. mas não rola...

 

No Servlet eu setei o atributo (que está com o valor correto):

 

request.setAttribute("placa", dadosVeiculo.get(i).getPlaca());

Compartilhar este post


Link para o post
Compartilhar em outros sites

$.getJSON é a mesma coisa que $.ajax. Por isso não faz sentido você usar um dentro do outro.

 

success: function(response) {
  $( placa ).val(response.placa);

  alert(response.placa);
   
}
entendeu ?

 

Como é o json q você está retornando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi..

 

O problema é esse William, não sei como fazer um retorno JSON... só estou com a lista no servlet.. mas não sei como enviar como json...

				for (int i = 0; i < dadosVeiculo.size(); i++) {
					request.setAttribute("placa", dadosVeiculo.get(i).getPlaca());
					/*dadosVeiculo.get(i).getMarca();
					dadosVeiculo.get(i).getModelo();
					dadosVeiculo.get(i).getAnoFabricacao();
					dadosVeiculo.get(i).getAnoModelo();
					dadosVeiculo.get(i).getRenavam();
					dadosVeiculo.get(i).getCor();*/
				}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai sua dúvida é no Java e não no JavaScript.

 

Pergunta lá no fórum de java, e dá uma pesquisada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.