Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Ajax] Autocomplete i brak reakcji na polskie znaki
Forum PHP.pl > Forum > XML, AJAX
john_doe
Witam,

w grę wchodzą trzy pliki:

1. index.php - tutaj jest pole input text i działa autocomplete

  1. <div>
  2. <b>Wybierz akronim:</b>
  3. <br />
  4. <input class="normal" type="text" size="30" id="inputString" onkeyup="lookup(this.value);" onblur="fill();" />
  5. </div>
  6.  
  7. <div class="suggestionsBox" id="suggestions" style="display: none;">
  8. <img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
  9. <div class="suggestionList" id="autoSuggestionsList">
  10. &nbsp;
  11. </div>
  12. </div>


2. autocomplete.js

  1. function lookup(inputString) {
  2. if(inputString.length == 0) {
  3. // Hide the suggestion box.
  4. $('#suggestions').hide();
  5. } else {
  6. $.post("autoCompleteSql.php", {queryString: ""+inputString+""}, function(data){
  7. if(data.length >0) {
  8. $('#suggestions').show();
  9. $('#autoSuggestionsList').html(data);
  10. }
  11. });
  12. }
  13. } // lookup
  14.  
  15. function fill(thisValue) {
  16. $('#inputString').val(thisValue);
  17. setTimeout("$('#suggestions').hide();", 200);
  18. }


3. autoCompleteSql.php - do tego pliku odwołuję się poprzez AJAX i wyświetlam w autoComplete

  1. <?php
  2. header("Content-Type: text/html; charset=windows-1250");
  3. include('../../db/connection.php');
  4.  
  5.  
  6. // Is there a posted query string?
  7. if( isSet( $_POST['queryString'] ) )
  8. {
  9. $queryString = $_POST['queryString'];
  10.  
  11. $stmt = $dbh->prepare( "SELECT TOP 20 knt_gidnumer, knt_akronim FROM cdn.kntkarty WHERE knt_archiwalny = 0 and knt_akronim LIKE '$queryString%'" );
  12.  
  13. $stmt->execute();
  14.  
  15. while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) )
  16. {
  17. echo '<li id="liPos" onClick="fill(\''.$row['knt_akronim'].'\');">'.$row['knt_akronim'].'</li>';
  18. }
  19. } else 'No direct access to this script. Go away!';
  20.  
  21.  
  22. ?>


wszystko działa ok, zaczynam wpisywać nazwy kontrahentów, pojawia się okienko z podpowiedziami. Kłopot w tym, że jeśli w nazwie występuję polski znak to skrypt nie działa. Jak widzicie wyżej kombinuję z header ale bez rezultatu. Wszystkie pliki mam zakodowane w windows 1250 a to dlatego, że pracuję na bazie sqlServer2000 i na innym kodowaniu np utf-8 czy iso 8859-2 nie otrzymuję polskich znaków gdy odpytuję bazę i wyświetlam wyniki.
Macie może jakiś pomysł co by tu spróbuwać aby te polskie znaki w autoComplete brało pod uwagęquestionmark.gif?


pozdrawiam
JoShiMa
A to czytałeś:

http://blog.bexlab.pl/polskie-znaki-w-php-...rech-aktach/65/
thek
Ja to bym ostro kombinował z kodowaniem. Sam się z tym czasem gryzłem. Najgorzej gdy pliki nie tylko mają inne kodowanie strony, ale i wewnętrzne pliku. Nie każdy to zauważa. Kiedyś spędziłem trochę czasu zanim zauważyłem, że plik strony był w innym niż autocomplete i przez to nie tylko był rozjazd na standardowej linii utf-latin-windows (baza swoje także dokładała, lecz "rodzinka set" zrobiła swoje) ale jeszcze na płaszczyźnie ansii-utf. Ogólnie rzecz biorąc jeśli piszesz kod, to pierwsza rzecz o jaką musisz zadbać to jednolite kodowanie wszystkiego lub pisanie tak, by się jednolite wydawało od strony użytkownika.
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.