Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%)
|
WITAM!!!
Widziałem kilka projektów AJAX typu suggestion tool i sam postanowiłem zbudować podobny w oparciu o bibliotekę advAJAX. Działanie jest proste - użytkownik wpisuje słowo, jeśli w bazie danych są podobne, to wyświetlane jest okno podpowiedzi, jesli nie, to musi sam dokończyć wpisywanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Następnie słowo to dodawane jest do bd (jeśli go nie było). Efekt pracy przedstawię poniżej, ale nie jest to w 100% działający projekt, ponieważ po wyborze słowa (jak są polskie litery, np. brązowy), a następnie skasowaniu z niego kilku ostatnich liter - w oknie podpowiedzi nie wyświetla się nic, dopóki są polskie litery (miły wyjątek stanowi przeglądarka IE). Jak ktoś będzie wiedział jak to rozwiazać to proszę, oraz proszę o wypowiedzenie się na temat tego "narzędzia"... Pliki wchodzące w skład projektu: Oczywiście wymagany jest plik advajax.js Baza danych z której są pobierane słowa:
Plik start.html zawierający prosty formularz:
Plik suggest.js wykorzystujący AJAX: Kod function $(id) { return document.getElementById(id); } // zmiana koloru wiersza (onmouseover) function highlight() { this.className = "highlight"; } // zmiana koloru wiersza (onmouseout) function unHighlight() { this.className = "unhighlight"; } // akceptacja podpowiedzi function selectWord() { $("string").value = this.innerHTML; $("suggestion").style.display = "none"; } // konwersja dokumentu XML na elementy span function parseRecords(xml) { // zapisanie danych bieżącej strony with (xml.getElementsByTagName("words").item(0)) { var count = getAttribute("count")*1; } if(count == 0) $("suggestion").style.display = "none"; // wpisanie odpowiednich słów do pola suggestion var space = $("suggestion"); space.innerHTML = ""; // wyczyszczenie poprzedniej listy var word = xml.getElementsByTagName("word"); for (i = 0; i < word.length; i++) { spanNode = document.createElement("span"); spanNode.innerHTML = word[i].childNodes[0].nodeValue; spanNode.onmouseover = highlight; spanNode.onmouseout = unHighlight; spanNode.onmousedown = selectWord; space.appendChild(spanNode); } } // funkcja wywołująca skrypt php i pobierająca dokument XML function showWords() { var string = $("string").value; if(string) { // przy pustym polu nie następuje wysyłanie żądania advAJAX.get({ url : "suggest.php?prefix="+$("string").value, onInitialization : function() { $("suggestion").style.display = "block"; }, onSuccess : function(obj) { parseRecords(obj.responseXML); }, onError : function(obj) { alert("Nie można nawiązać połączenia z serwerem."); } }); } else { // ukrycie warstwy $("suggestion").style.display = "none"; } } Plik suggest.php (wywoływany przez suggest.js)
Plik add.php odpowiedzialny za dodanie słowa do bazy danych:
Oraz plik kaskadowych arkuszy stylów (css.css): html, body{ padding: 0; margin: 0; font-family : Arial, sans-serif; } Kod #inputBox { border: 3px double #000; background: #CCF; margin: 1em; padding: 0.5em; } #suggestion { background: #FFF; height: 100px; width : 200px; border: 1px solid #000; margin: 0.1em; position: relative; left: 140px; overflow : auto; float : left; display: none; cursor: default; } #suggestion span { display: block; } #string { width : 200px; font-size : 13px; padding-left : 2px; border: 1px solid #000; } #button { width: 100px; color: #FFF; background: #000; border: 1px solid #FFF; } .highlight { background-color: #69F; color: #FFF; } .unhighlight { background-color: #FFF; color: #000; } Gdyby nie omówiona wada, byłbym zadowolony z funkcjonalności (pomimo, że wystarczy sam js, ale czego sie nie robi dla praktyki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ). Ten post edytował JaRoPHP 15.05.2006, 08:03:24 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%)
|
Polskie znaki, w ogóle jakiekolwiek ciągi znaków jak już sugerował Ci Anakin powinenes przepuszczać przez encodeURIComponent().. ewentualnie gdy przesyłasz dane poprzez POST to zdaje się musisz juz ich tym filtrować (ale tego nie jestem na tę chwilę pewien). Też pracuj w kodowaniu utf-8.. oszczędzi Ci to wielu problemów własnie związanych z kodowaniem znaków.
|
|
|
|
JaRoPHP advAjax - suggestion 14.05.2006, 22:48:26
anAKiN Argument
Kodurl : "suggest.php?prefix=... 14.05.2006, 23:38:31
JaRoPHP Dzięki anAKiN za sugestie, choć nie do końca rozum... 15.05.2006, 09:49:16
anAKiN CytatCzy więc argument var1=value1 jest źle podany... 15.05.2006, 10:17:16
JaRoPHP Dzięki anAKiN!
A teraz moze ktoś wie, jak roz... 15.05.2006, 17:46:28
JaRoPHP No tak, ale z kodowaniem utf-8 też są problemy - n... 16.05.2006, 18:42:43
dyktek przez encodeURIComponent() musze przepuścić to co ... 19.05.2006, 10:51:39
mariuszn3 CytatNo tak, ale z kodowaniem utf-8 też są problem... 19.05.2006, 11:11:16
dyktek no tak masz racje przez pomyłke wstawiłem to w bbc... 19.05.2006, 11:20:13 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 08:45 |