Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]błąd z modyfikacją (wyszukiwarka) ajax
Forum PHP.pl > Forum > Przedszkole
sillee
Zamontowałem sobie tego moda: http://funkcje.net/nsc/2/1589/0/10/page.html
Niestety nie chce mi "szukać" fraz i wyskakuje mi w firebugu taki błąd:


  1. missing } after function body
  2. [Wstrzymuj na tym błędzie] /* Prototype JavaScript framework, ve...---------------*/Element.addMethods();
  3. prototype.js (wiersz 1)
  4. missing ; before statement
  5. [Wstrzymuj na tym błędzie] function searchSuggest(){;var str = es...yId('search_suggest').innerHTML = '';}

jak to naprawic?

adres www.mfportal.pl/suggest.html
ir3nicus
"missing } after function body "

tzn że brakuje zamknięcia klamerki

sprawdź czy dobrze przekleiłeś

sillee
sprawdzałem kilkukrotnie.
kpt_lucek
[JAVASCRIPT] pobierz, plaintext
  1. function searchSuggest(){; //<-na cholere tu średnik?
  2. var str = escape(document.getElementById('searchinput').value);
  3. var myAjax = new Ajax.Request('suggest.php',
  4. {
  5. method: 'get',
  6. parameters: "search="+str,
  7. onComplete: showResponse,
  8. onFailure: showAlert
  9. });
  10. }
  11.  
  12. function showResponse(text)
  13. {
  14. var search_suggest = document.getElementById("search_suggest");
  15. search_suggest.style.visibility = "visible";
  16. var ss = document.getElementById('search_suggest') //<- tutaj go zaś zabrakło
  17. ss.innerHTML = '';
  18. var str = text.responseText.split("\n");
  19. for(i=0; i < str.length - 1; i++)
  20. {
  21. var suggest = '<div onmouseover="java script:suggestOver(this);" ';
  22. suggest += 'onmouseout="java script:suggestOut(this);" ';
  23. suggest += 'onclick="java script:setSearch(this.innerHTML);" ';
  24. suggest += 'class="suggest_link">' + str[i] + '</div>';
  25. ss.innerHTML += suggest;
  26. }
  27. }
[JAVASCRIPT] pobierz, plaintext


Popraw i zobacz
Maze123987
jeden z błędów, który pojawiał się w konsoli zniknął.

  1. missing ; before statement
  2. [Wstrzymuj na tym błędzie] function searchSuggest(){;var str = es...yId('search_suggest').innerHTML = '';}


Ten zaś jeszcze został i szukajka nadal nie reaguje:
  1. missing } after function body
  2. [Wstrzymuj na tym błędzie] /* Prototype JavaScript framework, ve...---------------*/Element.addMethods();
  3. prototype.js (wiersz 1)
Dodałem na końcu "}" i błąd zniknął.
Za to po wpisaniu jakiejkolwiek literki, po ktorej wpisaniu normalnie powinny wyskakiwać te hasła.
Konsola zwraca błąd

  1. Ajax is not defined
  2. [Wstrzymuj na tym błędzie] function searchSuggest(){var str = esc...yId('search_suggest').innerHTML = '';}
  3. suggest.js (wiersz 1)


A szukajka nie reaguje.
nospor
No to pokaż kod. Wróżyć z fusów mamy?
To co pokazał kpt_lucek to jest cały kod? Nic więćej nie ma?
Maze123987
  1. function searchSuggest(){
  2. var str = escape(document.getElementById('searchinput').value);
  3. var myAjax = new Ajax.Request(
  4. 'suggest.php',
  5. {
  6. method: 'get',
  7. parameters: "search="+str,
  8. onComplete: showResponse,
  9. onFailure: showAlert
  10. });
  11.  
  12. }
  13. function showResponse(text){
  14.  
  15. var search_suggest = document.getElementById("search_suggest");
  16. search_suggest.style.visibility = "visible";
  17. var ss = document.getElementById('search_suggest');
  18. ss.innerHTML = '';
  19. var str = text.responseText.split("\n");
  20. for(i=0; i < str.length - 1; i++)
  21. { var suggest = '<div onmouseover="java script:suggestOver(this);" ';
  22. suggest += 'onmouseout="java script:suggestOut(this);" ';
  23. suggest += 'onclick="java script:setSearch(this.innerHTML);" ';
  24. suggest += 'class="suggest_link">' + str[i] + '</div>';
  25. ss.innerHTML += suggest;
  26. }
  27.  
  28.  
  29.  
  30. }
  31. function showAlert(MyRequest) {
  32. alert("Operacja nie powiodła się");
  33. }
  34. function suggestOver(div_value) {
  35.  
  36. div_value.className = 'suggest_link_over';
  37. }
  38. function suggestOut(div_value) {
  39.  
  40. div_value.className = 'suggest_link';
  41. }
  42. function setSearch(value) {
  43. var search_suggest = document.getElementById("search_suggest");
  44. search_suggest.style.visibility = "hidden";
  45. document.getElementById('searchinput').value = value;
  46. document.getElementById('search_suggest').innerHTML = '';
  47. }

To jest suggest.js,
a w załączniku dodaje prototype.js
http://www.wrzuc.to/gL4b4SS.wt

@Edytowałem mój post wyżej.
nospor
"Ajax is not defined"
Dołączyłes w ogóle prototype.js?
Maze123987
Tak:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>AJAX suggest</title>
  5. <meta name="keywords" content="" />
  6. <meta name="description" content="" />
  7. <link href="styl.css" rel="stylesheet" type="text/css" />
  8. <script type="text/javascript" src="js/prototype.js"></script>
  9. <script type="text/javascript" src="js/suggest.js"></script>
  10. </head>
  11. <form id="searchform" method="get" action="">
  12. <legend>Search</legend>
  13. <input id="searchinput" type="text" name="searchinput" value="" onkeyup="searchSuggest();" />
  14. <input id="searchsubmit" type="submit" value="Search" />
  15. <div id="search_suggest">
  16. </div>
  17. </form>
  18. </body>
  19. </html>

nospor
A wgrałeś do katalogu js plik prototype.js? Bo komunikat błędu sugeruje, ze prototype jednak się nie załadował.
Maze123987
Oczywiście, sprawdzałem to kilkukrotnie i nawet zmieniałem lokalizację pliku.
nospor
Masz to gdzieś wystawione, że sami sprawdzimy to online?
Maze123987
W pierwszym poście podałem adres www.mfportal.pl/suggest.html
nospor
No tak... nie dałeś jako linka i przeoczyłem smile.gif

Wchodząc na stronę, firebug pokazuje, że nie widzi prototype...dziwne...
A weź wrzuć normalny prototype, beż zadnej minimalizacji
Maze123987
Niestety jest zbyt długi. Dodałem go wcześniej w załączniku (na wrzuc.to) czy jakoś tak.
http://www.wrzuc.to/gL4b4SS.wt

W konsoli google chrome widzę takie błędy


Kod
Uncaught SyntaxError: Unexpected end of input

Uncaught SyntaxError: <unknown message reserved_word>

GET http://127.0.0.1:10000/gui/pair?name=uT%20Toolbar%20Client&callback=storePairingKey&r=0.8545187534764409 401 (Unauthorized)

Uncaught ReferenceError: Ajax is not defined
searchSuggestsuggest
(anonymous function)
onkeyupsuggest
nospor
Ty nie masz prototype wklejać nam na forum, tylko masz prototype.js w pełnej wersji wrzucic u siebie na serwer. Bo teraz na serwerze masz wersję zminimalizowaną.
Maze123987
Nie wiem czy o to chodziło, ale wgrałem tą bibliotekę.
https://ajax.googleapis.com/ajax/libs/proto....0/prototype.js

jakieś pomysły?

bump
----------------------------------------------------------------------------------------------------
ostatecznie zamontowałem sobie ten skrypt:

http://www.wrzuc.to/0Z8RudV.wt

Wszystko działa ( http://mfportal.pl/r06/suggest/ )
Niestety mam pewien problem. Sugerowane wyniki pobierane są z bazy i po wybraniu któregoś z nich przenosi do adresu http://www.php.net/manual/en/function. i na koncu dodaje wybraną nazwę. Jak zrobić, aby samemu dodawać do konkretnej nazwy adres url do którego ma przenosić po wybraniu jej?


  1. /* URL do strony PHP, która poda podpowiedzi dla danego słowa kluczowego*/
  2. var getFunctionsUrl = "suggest.php?keyword=";
  3. /* URL który pokaże wyniki wyświetlane dla wybranej podpowiedzi */
  4. var phpHelpUrl="http://www.php.net/manual/en/function.";
  5. /* słowo kluczowe, dla którego wywołujemy żądanie HTTP*/
  6. var httpRequestKeyword = "";
  7. /* ostatnie słowo kluczowe, dla którego wysyłano żądanie*/
  8. var userKeyword = "";
  9. /* ilość podpowiedzi pojawiających się dla danego słowa kluczowego*/
  10. var suggestions = 0;
  11. /* maksymalna liczba znaków wyświetlanych w podpowiedzi*/
  12. var suggestionMaxLength = 30;
  13. /* flaga, która wskazuje, czy użytkownik skorzystał ze strzałek w górę lub w dół podczas ostatniego zdarzenia keyup*/
  14. var isKeyUpDownPressed = false;
  15. /* ostatnia podpowiedź użyta do autouzupełniania słowa kluczowego*/
  16. var autocompletedKeyword = "";
  17. /* flaga, która określa, czy są wyniki dla obecnego słowa kluczowego*/
  18. var hasResults = false;
  19. /* identyfikator używany do odwołania procesu oceny (metoda Timeout)*/
  20. var timeoutId = -1;
  21. /* obecnie wybrana (myszą lub strzałkami) podpowiedź*/
  22. var position = -1;
  23. /* obiekt pamięci podręcznej, zawierający podpowiedzi pobrane dla różnych słów kluczowych*/
  24. var oCache = new Object();
  25. /* minimalna i maksymalna pozycja widocznych podpowiedzi*/
  26. var minVisiblePosition = 0;
  27. var maxVisiblePosition = 9;
  28. // wartośc true owoduje wyświetlenie szczegółowego komunikatu o błędzie
  29. var debugMode = true;
  30. /* obiekt XMLHttpRequest, stworzony do komunikowania się z serwerem*/
  31. var xmlHttpGetSuggestions = createXmlHttpRequestObject();
  32. /* funkcja init obsługuje zdarzenie onload*/
  33. window.onload = init;


To początek pliku suggest.js. Reszta plików w kodzie. Mógłby ktoś mi coś poradzić smile.gif?
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.