Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, não aguento mais.
To tentando acresentar a função de Typeahead em um dos meus inputs.
Então, procurei uns video e achei esse:
Até ai tudo bem, o cara fez certinho e tudo mais.
Então, fui tentar fazer no meu, fiz tudo IGUALZINHO o cara fez. Mas não funcionou. To fuçando nessa parada faz uns 30 minutos e NADA.
Eu sei que isso não envolve apenas PHP, mas postarei aqui, caso tenha alguma restrição é so mudar de área.
Os códigos que eu estou usando são esses (idênticos ao do video):
<?php
include "config.php";
if (isset($_POST['query'])){
$query = $_POST["query"];
$sql = mysql_query("SELECT * FROM tabela WHERE frase LIKE '%{$query}%'");
while($row = mysql_fetch_assoc($sql)){
$array[] = $row['frase'];
}
echo json_encode($array);
}
?>
E o script do JS é esse:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="js/bootstrap.js"></script>
<script>
$(function() {
$("#typeahead").typeahead({
source: function(typeahead, query) {
$.ajax({
url: 'teste.php',
type: 'POST',
data: 'query=' + query,
dataType: 'JSON',
async: false,
success: function(data){
typeahead.process(data);
}
});
}
});
});
</script>
AGRADEÇO MUITO a quem ajudar! Valeu.
aperte Ctrl+Shift+J no teu firefox e veja oq aparece no console.
Leituras:
http://wbruno.com.br/2011/04/14/como-debugar-ajax-firebug/
http://wbruno.com.br/2011/03/31/como-debugar-javascript-firefox-erros-comuns/
Essa é a questão. Não acontece nada.
Quando eu digito um texto no campo input não aparece as "opções" de completar em baixo, como deveria acontecer.
E Bruno, não tem nenhum erro. Apenas alguns alertas que ignoraram alguns styles do bootstrap.
$sql = mysql_query("SELECT * FROM tabela WHERE frase LIKE '%".$query."%'");
Também pensei nisso, tenta remover {} da query
vai acompanhando no console do firebug:
<script>
$(function() {
console.log('dom pronto');
$("#typeahead").typeahead({
source: function(typeahead, query) {
console.log('metodo source');
$.ajax({veja quais desses logs aparecem.Bruno, você tinha razão.
Eu olhei direito novamente e ele aparece um erro no arquivo bootstrap.js (onde está a função do JS).
E o erro é bem nessa linha:
if ($.browser.webkit || $.browser.msie)
E eu não faço idéia do que seja.
Também ocorre um erro nessa:
if (results.length && typeof results[0] != "string")
Eu não sei como arrumar porque não fui eu que fiz, foi o próprio twitter bootstrap que disponibiliza, então sei lá.
Seu banco está retornando uma consulta com codificação utf-8?
Já tive problemas com isto, tente alterar isto para ver se ajuda (somente altere se suas consultas não estejam retornando em UTF-8):
<?php include "config.php";
if (isset($_POST['query'])){
$query = $_POST["query"];
$sql = mysql_query("SELECT * FROM tabela WHERE frase LIKE '%{$query}%'");
while($row = mysql_fetch_assoc($sql)){
//altere aqui
//$array[] = $row['frase'];
//Para
$array[] = utf8_encode($row['frase']);
}
echo json_encode($array);
}
?>preciso de mais detalhes cara, para ter dado erro no core do fw, o problema está em como vc está usando ele.
vc tem mais algum código js nessa página ?
poste um link para o projeto, ai consigo ver.
E ae reidark tudo bem?
Cara o que não está funcionando? A pagina com o script está recebendo a query e depois devolvendo o Json?
Pode falar o que não funcionou?
Dica, cara toma cuidado em jogar qualquer codigo dentro do seu banco, sem tratar ele antes.