Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [prototype] wyszukiwarka z podpowiedziami
Forum PHP.pl > Forum > XML, AJAX > AJAX
sirkus
znalazłem w ciekawy tutorial jak zbudować w Ajaxie wyszukiwarkę z podpowiedziami jednak utknąłem na jakimś dziwnym błędzie, proszę o pomoc

całość wyglada następująco
index.html
Cytat
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>AJAX suggest</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="styl.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/suggest.js"></script>
</head>
<body>
<form id="searchform" method="get" action="">
<fieldset>
<legend>Search</legend>
<input id="searchinput" type="text" name="searchinput" value="" onkeyup="searchSuggest();" />
<input id="searchsubmit" type="submit" value="Search" />
</fieldset>
<div id="search_suggest">
</div>
</form>
</body>
</html>


suggest.js
Cytat
function searchSuggest(){
var str = escape(document.getElementById('searchinput').value);
var myAjax = new Ajax.Request(
'suggest.php',
{
method: 'get',
parameters: "search="+str,
onComplete: showResponse,
onFailure: showAlert
});

}
function showResponse(text){

var search_suggest = document.getElementById("search_suggest");
search_suggest.style.visibility = "visible";
var ss = document.getElementById('search_suggest')
ss.innerHTML = '';
var str = text.responseText.split("\n");
for(i=0; i < str.length - 1; i++)
{ var suggest = '<div onmouseover="java script:suggestOver(this);" ';
suggest += 'onmouseout="java script:suggestOut(this);" ';
suggest += 'onclick="java script:setSearch(this.innerHTML);" ';
suggest += 'class="suggest_link">' + str[i] + '</div>';
ss.innerHTML += suggest;
}



}
function showAlert(MyRequest) {
alert("Operacja nie powiodła się");
}
function suggestOver(div_value) {

div_value.className = 'suggest_link_over';
}
function suggestOut(div_value) {

div_value.className = 'suggest_link';
}
function setSearch(value) {
var search_suggest = document.getElementById("search_suggest");
search_suggest.style.visibility = "hidden";
document.getElementById('searchinput').value = value;
document.getElementById('search_suggest').innerHTML = '';
}


suggest.php
Cytat
<?php

function lacz_bd()
{
$db = new mysqli('localhost', '***', ****', '*****');
if (! $db)
return false;
$db->autocommit(TRUE);
return $db;
}
$search = addslashes($_GET['search']);
if(!empty($search)){

$db = lacz_bd();
if (mysqli_connect_errno() === 0){
$db -> query("SET NAMES 'utf8'");
}
$zapytanie = "select title from suggest where title LIKE '%$search%' LIMIT 10";
$wynik = $db->query($zapytanie);
$ile_znalezionych = $wynik->num_rows;

for ($i=0; $i <$ile_znalezionych; $i++)
{
$wiersz = $wynik->fetch_assoc();
$str .= $wiersz['title']." \n";
}
$str .= "empty \n";
echo rtrim($str);
}
?>

oraz zaimportowana biblioteka prototype-1.6.0.3.js

online, jest to umieszczone tutaj: http://telefony.wo24.pl/
w bazie z podpowiedziami narazie tylko kilka następujących rekordów : funkcje, php, ajax, ajaaaax, html, mama, aaaaajax

zainstalowałem sobie firebug'a pod ff żeby zobaczyć co za błąd i za każdym razem gdy wpisuję pierwszą literkę w formularzu odrazu wyskakuje błąd w firebugu:

Cytat
Ajax is not defined(no source for http://telefony.wo24.pl/js/suggest.js)

po kliknięciu na błąd (w szczegółach):
Cytat
Ajax is not definedsearchSuggest()suggest.js (wiersz 3)onkeyup(keyup charCode=0, keyCode=65)GaMYzzOR...R3A%3D%3D (wiersz 2)(no source for http://telefony.wo24.pl/js/suggest.js)
Cytat
Failed to load source for sourceFile top-level http://telefony.wo24.pl/js/suggest.js script.tags( X| 15531 15535 15536 15537 15538 15539 )


cały ajax i JS jest mi obcy gdyż na codzień mam doczynienia głównie z PHP jednak bardzo potrzebuje tych podpowiedzi z bazy przy wpisywanym tekście, czy ktoś jest w stanie nakierować mnie co jest nie tak questionmark.gif z góry serdecznie dziekuje
erix
Krótka piłka - prototype.js załączasz na końcu? Jeśli tak - masz swoją przyczynę.
piotrooo89
jeśli mogę coś od siebie dorzucić, kiedyś napisałem taki artykuł: http://olaszewski.com/2008/12/08/autosugestia-ajax-mysql/ może Ci się przyda.
sirkus
Cytat(erix @ 16.03.2009, 21:15:19 ) *
Krótka piłka - prototype.js załączasz na końcu? Jeśli tak - masz swoją przyczynę.


prototype jest załączone w index.html

<script type="text/javascript" src="js/prototype.js"></script>
przed
<script type="text/javascript" src="js/suggest.js"></script>

piotrooo89 dzięki, zaraz się temu przyjrzę
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.