Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcjonalność javascriptu działa pod windowsem a pod linuksem nie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
lkjhgf345
Witam
W prostej aplikacji napisanej w PHP mam formularz. Mam w nim stworzony w JavaScripcie auto uzupełnianie dropdown listy (podaje literę i w dropdown liście pokazuje mi podpowiedzi). Na lokalnym serwerze (wamp, localhost) działa bez problemu. Problem się pojawia kiedy odpalam aplikację z serwera postawionego na linuksie. Bajer krótko mówiąc nie działa. Wpisuje ale lista się nie pokazuje. Myślę zbyteczne jest wklejanie jakiegokolwiek kodu skoro na windowsie działa. Proszę o radę.
kapslokk
Pierwsze co przychodzi mi do głowy to wielkości liter - np. w nazwach plików z js'em .
lkjhgf345
Muszę sprawdzić, tylko w którym miejscu?
viking
Uruchom konsolę w przeglądarce, zobacz jakie są błędy a potem trochę pomyśl.
kapslokk
W plikach html jesli masz wstawione <script src="">, to w ścieżce i samej nazwie pliku wielkość liter musi być dokładnie taka jak jest na dysku.
lkjhgf345
Hmm sprawa się trochę komplikuje.
Odnośnie liter w src mam tak
  1. src="//code.jquery.com/jquery-1.8.0.min.js"

A co do konsoli to w zakładce JS mam "metoda getPreventedDefault()" jest przestarzała. Należy używać defaultprevented.
kapslokk
to jest jedyny plik js? Jesli tak to najwidoczniej masz jakies bledy w PHP.
lkjhgf345
Cytat(lkjhgf345 @ 2.01.2017, 14:29:17 ) *
Na lokalnym serwerze (wamp, localhost) działa bez problemu.

dlatego to mnie dziwi. Mam jeszcze dodane datepicker i ma plik lokalnie ale ta funkcjonalność działa nawet na linuksie.
kapslokk
Wlacz wyswietlanie bledow, pokaz kod.
lkjhgf345
  1. <head>
  2. <meta charset="UTF-8">
  3. <link rel="stylesheet" href="strona.css" type="text/css"/>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <link rel="stylesheet" type="text/css" href="tcal.css" />
  6. <script type="text/javascript" src="//code.jquery.com/jquery-1.8.0.min.js"></script>
  7. <script type="text/javascript" src="tcal.js"></script>
  8. </head>
  9. <body>
  10.  
  11. <div id="container">
  12.  
  13.  
  14. <div id="content">
  15.  
  16.  
  17. <form name="sprzedawca" method="POST" action="dane.php" enctype="multipart/form-data" autocomplete="off" >
  18. <table border="0">
  19. <tr>
  20. <th colspan="2">dokument</th>
  21.  
  22. </tr>
  23. </thead>
  24.  
  25. <tr>
  26. <td>Data:</td>
  27. <td>
  28. <div><input type="text" name="data" class="tcal" value="" /></div>
  29. </td>
  30.  
  31. <tr>
  32. <td>sprzedawcat:</td>
  33. <td>
  34. <div class='web'>
  35. <input type="text" class="search_keyword" id="search_keyword_id" name="klient" />
  36. <div id="result"></div>
  37. </div>
  38. </td>
  39. </tr>
  40.  
  41.  
  42. </tbody>
  43. <script type="text/javascript">
  44. $(function(){
  45. $(".search_keyword").keyup(function()
  46. {
  47. var search_keyword_value = $(this).val();
  48. var dataString = 'search_keyword='+ search_keyword_value;
  49. if(search_keyword_value!='')
  50. {
  51. $.ajax({
  52. type: "POST",
  53. url: "search.php",
  54. data: dataString,
  55. cache: false,
  56. success: function(html)
  57. {
  58. $("#result").html(html).show();
  59. }
  60. });
  61. }
  62. return false;
  63. });
  64.  
  65. $("#result").live("click",function(e){
  66. var $clicked = $(e.target);
  67. var $name = $clicked.find('.country_name').html();
  68. var decoded = $("<div/>").html($name).text();
  69. $('#search_keyword_id').val(decoded);
  70. });
  71.  
  72. $(document).live("click", function(e) {
  73. var $clicked = $(e.target);
  74. if (! $clicked.hasClass("search_keyword")){
  75. $("#result").fadeOut();
  76. }
  77. });
  78.  
  79. $('#search_keyword_id').click(function(){
  80. $("#result").fadeIn();
  81. });
  82. });
  83. </form>
  84.  
  85. </center>
  86. </div>
  87. </div>
  88.  
  89. </body>
  90. </html>
  91.  

plik search.php
  1. <?php
  2. include('/db.php');
  3. if(isset($_POST['search_keyword']))
  4. {
  5. $search_keyword = $polaczenie->real_escape_string($_POST['search_keyword']);
  6. $sqlCountries="SELECT nazwa FROM sklep WHERE nazwa LIKE '%$search_keyword%'";
  7. $resCountries=$polaczenie->query($sqlCountries);
  8.  
  9. if($resCountries === false) {
  10. trigger_error('Error: ' . $polaczenie->error, E_USER_ERROR);
  11. }else{
  12. $rows_returned = $resCountries->num_rows;
  13. }
  14.  
  15. $bold_search_keyword = '<strong>'.$search_keyword.'</strong>';
  16. if($rows_returned > 0){
  17. while($rowCountries = $resCountries->fetch_assoc())
  18. {
  19. echo '<div class="show" align="left"><span class="country_name">'.str_ireplace($search_keyword,$bold_search_keyword,$rowCountries['nazwa']).'</span></div>';
  20. }
  21. }else{
  22. echo '<div class="show" align="left">Brak</div>';
  23. }
  24. }
  25. ?>
kapslokk
Sprawdz teraz czy nazwa pliku search.php jest identyczna jak na serwerze - pod katem wielkosci liter, dodatkowo sprawdz w konsoli przegladarki, czy gdy wpisujesz cos w tego inputa to czy ajax jest wysylany i jakie odpowiedzi dostaje.

Nie wazne... masz blad w php
include('/db.php');

Poczytaj o systemie plikow w linuxie i popraw ten blad.
lkjhgf345
Powinno być
include('db.php');
ale niestety dalej dziad nie rusza. Mało tego kiedy próbuję coś wpisać w inputa nic w konsoli się nie pojawia prócz TypeError: $(...).live is not a function. ohno-smiley.gif Nie wiem czy to coś ma wspólnego. Będe musiał porównać z tym co się pokazuje w konsoli na windowsie.
viking
Bodajże od 1.7 live jest przestarzałe. Tutaj masz jak to zrobić poprawnie: https://prophp.pl/article/15/jquery%2C_zdar...e_metoda_%24.on No i popraw to sql injection w zapytaniu.
lkjhgf345
Spróbuję przygotować ten skrypt pod windowsem i jak się uda to jutro wrzucić go na linuksa i przetestować. Mam nadzieję że to będzie to.
viking
System na którym pracujesz nie ma znaczenia. Po prostu Twój kod jest słaby i przestarzały.
lkjhgf345
Nie traktuj mojej odpowiedzi jako niegrzecznej smile.gif ale to dlaczego musiałem zakładać ten temat? sekret.gif Znaczy wychodzę z założenia że jaki ten kod by nie był jeśli działa pod windowsem powinien działać i pod linuksem. Pomijam kwestie jakiś bibliotek czy innych "czynników" środowiskowych które w przypadku PHP czy (chyba?) Javascriptu nie mają znaczenia. Dlatego od początku i jeszcze póki co winie sam system. smile.gif

  1. <script type="text/javascript">
  2. $(function(){
  3. $(".search_keyword").keyup(function()
  4. {
  5. var search_keyword_value = $(this).val();
  6. var dataString = 'search_keyword='+ search_keyword_value;
  7. if(search_keyword_value!='')
  8. {
  9. $.ajax({
  10. type: "POST",
  11. url: "search.php",
  12. data: dataString,
  13. cache: false,
  14. success: function(html)
  15. {
  16. $("#result").html(html).show();
  17. }
  18. });
  19. }
  20. return false;
  21. });
  22.  
  23. $("#result").on("click",function(e){
  24. var $clicked = $(e.target);
  25. var $name = $clicked.find('.country_name').html();
  26. var decoded = $("<div/>").html($name).text();
  27. $('#search_keyword_id').val(decoded);
  28. });
  29.  
  30. $(document).on("click", function(e) {
  31. var $clicked = $(e.target);
  32. if (! $clicked.hasClass("search_keyword")){
  33. $("#result").fadeOut();
  34. }
  35. });
  36.  
  37. $('#search_keyword_id').click(function(){
  38. $("#result").fadeIn();
  39. });
  40. });
  41. </script>

Czy sama zamiana "live" na "on" wystarczy?
viking
Ale zrozum że to nie wina systemu tylko kodu. Przeglądarka w obu systemach jest taka sama, PHP przetwarza kod tak samo. Jedyna różnica to wspomniana wielkość liter. Nie ma możliwości żeby działał na jednym a na innym już nie.
kapslokk
Cytat
Znaczy wychodzę z założenia że jaki ten kod by nie był jeśli działa pod windowsem powinien działać i pod linuksem.

Ze złego założenia wychodzisz. Kod, żeby działał pod tymi systemami tak samo, musi być odpowiednio napisany, drobne różnice, jak choćby to, że w unixach wielkość liter ma znaczenie wpływają na to, że kod inaczej zachowuje się inaczej. To nie wina systemu, tylko Twoja smile.gif
lkjhgf345
Niestety. A czy ktoś by mógł mi jeszcze co nieco wskazać w kodzie? Sam już nie wiem gdzie mam jeszcze sprawdzić te litery?
nospor
Wlacz wyswietlanie wszystkich bledow potem odpal firebug w Firefox i podejrzyj sobie co zwraca ci ajax i wszystko bedzie jasne, nie trzeba bedzie zgadywac co tam sie zepsulo. Proste
trueblue
Sprawdź jaka jest odpowiedź żądania ajaxowego w konsoli w zakładce Network/Sieć.
lkjhgf345
Niestety dostęp do tego serwera mam tylko w szkole i mogę to zrobić tylko w ciągu dnia sad.gif ehh.....



O to screen z firebug. Te na dole dwie metody POST pojawiły się kiedy zacząłem wpisywać litery w inputa (w tym przypadku to były dwie litery). Przesłano ale nie przychodzi żadna odpowiedź, chyba.

DZIAŁA!! Wszysycy Pomógł
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.