Ajax + JSON + AutoComplete = problemas

3 respostas
Rafael_Guerreiro

Fala pessoal, tudo bem?

Eu tentei fazer o autocomplete funcionar de diversas formas, li a documentação la no jQuery UI e ainda segui o tópico: http://www.guj.com.br/java/259792-vraptor-34--jquery--autocomplete-resolvido

O ajax está funcionando, ele está entrando no método, está enviando o parâmetro certinho, mas na hora de mostrar os itens ele não mostra.
Eu tentei também ver a minha JSON, mas não consegui, tentei até colocando o link na url direto e não funcionou…

A ideia é que o usuário vá digitando o começo do código (código é uma String) e ele retorne os itens…

Segue meu código:

@Get("/compass/search/")
	public void filtroJSON(String term) {
		List<Compass> listCodigo = compassDAO.listCodigo(term);

		result.use(Results.json()).withoutRoot().from(listCodigo).exclude("nome").serialize();
	}
$('#codigo').autocomplete({
				source:
					function(request, response){
						$.ajax({
							url: '<c:url value="/compass/search/"/>',
							data: {
								term: request.term
							},
							success: 
							function(data) {
			                	response($.map(data,
			                		function(item){
				                		return {
				                			label: item.codigo,
				                			value: item.codigo
				                		};
				                	}
				                ));
			                }
						});
		            },
				minLength: 2
			});
@Entity
@Table(name = "COMPASS_PORTOS", schema="ALIANCA_REPORTS")
public class Compass {

	@Id
	@Column(name = "PORT_CODE", length = 7, nullable = false)
	private String codigo;

	@Column(name = "PORT_NAME", length = 100)
	private String nome;
// getters e setters
}

Obrigado.

3 Respostas

D

mas você não pode dar return num $.ajax. Ele é assíncrono… então não esperaria pelo return… ele só faria a chamada e pularia…
Tenta colocar a tag async:false na chamada do ajax, tira o return de dentro , e seta os valores em variáveis para retornar.

Abs.

Rafael_Guerreiro

Este return não é do $.ajax() é da function que vai colocar os itens dentro do $.map() que vai ser jogado para o método response e este método popula os dados…

Desse jeito, como que eu setaria se fosse pelas variáveis?

D

realmente eu viajei na resposta, mals…
o item.codigo tá vindo preenchido?

Criado 16 de março de 2012
Ultima resposta 16 de mar. de 2012
Respostas 3
Participantes 2