Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX] - Czyli artykuł na temat polskich znaków !
SN@JPER^
post
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Przeszukując właśnie tematy tego forum pt. "polskie znaki w AJAX" doszedłem do wniosku, że napisze właśnie jak zapobiec "krzakom" w AJAX.

1. Pierwszą rzeczą, którą trzeba zrobic jest wstawienie meta tag np. w pliku index.html

  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />


2. Następnie, w pliku np. ajax.js dodajemy linijkę kodu:

  1. xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');


U mnie wygląda to tak:

  1. function process()
  2. {
  3. wiadomosc("Pobieranie wiadomości... Proszę Czekac");
  4.  
  5. try
  6. {
  7. xmlHttp.open("GET", serveradres, true);
  8. xmlHttp.onreadystatechange = ReServer;
  9. xmlHttp.send(null);
  10. xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');
  11. }
  12.  
  13. catch(e)
  14. {
  15. errorwiadomosc();
  16. }
  17. }


3. przy pobieraniu danych z bazy w pliku np. ajax.class.php robimy zapytanie:

  1. <?php
  2. $query_kod = "SET NAMES latin2";
  3.  $result = $this->mMysqli->query($query_kod);
  4. ?>


najlepiej przed zapytaniem przy pobieraniu danych.

U mnie cała funkcja wygląda tak:

  1. <?php
  2. public function Ajax()
  3. {
  4.  usleep(25000);
  5.  
  6.  //KODOWANIE ZNAKÓW
  7.  
  8.  $query_kod = "SET NAMES latin2";
  9.  $result = $this->mMysqli->query($query_kod);
  10.  
  11.  
  12.  
  13.  $query = 'SELECT * FROM sb_wpis';
  14.  
  15.  $result = $this->mMysqli->query($query);
  16.  
  17.  $dane = $result->fetch_array(MYSQLI_ASSOC);
  18.  
  19.  $result->close();
  20.  
  21.  $id = stripslashes($dane['id']);
  22.  $data = stripslashes($dane['data']);
  23.  $tresc = stripslashes($dane['tresc']);
  24.  $autor = stripslashes($dane['autor']);
  25.  
  26.  
  27.  
  28.  $wiadomosc = '['. $data .']'. $tresc .'-'. $autor.'.';
  29.  return $wiadomosc;
  30.  
  31. }
  32. ?>


Myślę, że choć trochę pomogłem

Pozdrawiam.

Ten post edytował SN@JPER^ 4.05.2007, 09:49:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
andulka
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 21.06.2005

Ostrzeżenie: (0%)
-----


Napotkałem dziwny problem, korzystam z ajaxa, aby sprawdzać dostępność loginu w bazie danych.

Po wpisywaniu nowego loginu, skrypt sprawdza, czy login już nie istnieje. Jeśli login istnieje, pole podświetla się na czerwono, jeśli nie, to pole podświetla się na źółto i można taki login dodać do bazy danych.
Jedyne, co nie działa, to sprawdzanie loginów z polskimi diakrytykami w Internet Explorerze (przez ajax). W FF i Operze działa znakomicie.

Skrypt oraz baza danych kodowane są w UTF-8.

Czy ktoś ma jakiś pomysł, żeby skrypt działał poprawnie pod IE ?
index.php:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  5. <title>Linkownia</title>
  6. <script type="text/javascript" src="scripts.js"></script>
  7. </head>
  8. <body>
  9. <?
  10.  
  11. //laczenie z serwerem MySQL
  12. $link = mysql_pconnect('localhost', 'login', 'pass');
  13. mysql_select_db("link");
  14. mysql_query("SET NAMES utf8");
  15.  
  16. if (isset($_POST['login']))
  17. {
  18.  
  19. $err='';
  20.  
  21. if ($_POST['login']=='') $err='Login jest zbyt krótki';
  22. if ($err=='')
  23. {
  24.  
  25. $login = $_POST['login'];
  26.  
  27. $result = mysql_query ("SELECT count(*) FROM users WHERE login = '$login'");
  28. $row = mysql_fetch_array($result);
  29. if ($row['count(*)']>0) $err='Istnieje już użytkownik o takim loginie';
  30. }
  31.  if ($err=='')
  32.  {
  33.  
  34.  mysql_query ("INSERT INTO users (login) VALUES ('$login')");
  35.  echo '<div class="ok">Rejestracja przebiegła poprawnie</div>';
  36.  return;
  37. } else echo '<div class="error">'.$err.'</div>';
  38. } else {
  39. $_POST['login']='';
  40. }
  41.  
  42. ?>
  43.  
  44. <form action="index.php" method="post">
  45. <table>
  46. <tr><td>Login:</td><td><input type="text" onblur="kontrola_login()" id="login" name="login" /></td></tr>
  47. <tr><td></td><td><input type="submit" value="Wyślij formularz" /></td></tr>
  48. </table>
  49. </form>
  50.  
  51. </body>
  52. </html>


plik wykorzystywany przez ajax do zapytań w bazie danych: infoajax.php
  1. <?
  2. if (isset($_GET['a'])) $a=$_GET['a']; else $a='';
  3.  
  4. //laczenie z serwerem MySQL
  5. $link = mysql_pconnect('localhost', 'login', 'pass');
  6. mysql_select_db("link");
  7. mysql_query("SET NAMES utf8");
  8.  
  9.  
  10.  
  11. if (isset($_GET['a'])) $a=$_GET['a']; else $a='';
  12.  
  13.  $result = mysql_query ("SELECT count(*) FROM users WHERE login='$a'");
  14.  $row = mysql_fetch_array($result);
  15.  echo $row['count(*)'];
  16. ?>


obsługa ajaxa: scripts.js
  1. <?php
  2. if (window.XMLHttpRequest) 
  3. { 
  4.  OAJAX = new XMLHttpRequest(); 
  5. }
  6. else if (window.ActiveXObject) 
  7. { 
  8.  OAJAX = new ActiveXObject("Microsoft.XMLHTTP");
  9. }
  10.  
  11. function kontrola_login()
  12. {
  13.  if(OAJAX) 
  14.  {
  15. var l = document.getElementById('login');
  16.  
  17. OAJAX.open("GET", 'infoajax.php?a='+l.value);
  18.  
  19. OAJAX.onreadystatechange = function() 
  20. {
  21.  if (OAJAX.readyState == 4)
  22.  {
  23.  
  24.  if (OAJAX.responseText>0)
  25.  {
  26. l.style.background="red";
  27. l.focus();
  28.  
  29. } else
  30. {
  31. l.style.background="yellow";
  32. }
  33.  }
  34. } 
  35.  
  36. OAJAX.send(null); 
  37.  }
  38. }
  39. ?>


Update 2008.09.01.
Udało mi się rozwiązać problem.
W pliku scripts.js należy zamienić metodę GET na POST:

  1. <?php
  2. if (window.XMLHttpRequest) 
  3. { 
  4.  OAJAX = new XMLHttpRequest(); 
  5. }
  6. else if (window.ActiveXObject) 
  7. { 
  8.  OAJAX = new ActiveXObject("Microsoft.XMLHTTP");
  9. }
  10.  
  11. function kontrola_login()
  12. {
  13.  if(OAJAX) 
  14.  {
  15. var l = document.getElementById('login');
  16.  
  17. OAJAX.open("POST", 'infoajax.php', true);
  18.  OAJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  19.  
  20. OAJAX.onreadystatechange = function() 
  21. {
  22.  if (OAJAX.readyState == 4)
  23.  {
  24.  
  25.  if (OAJAX.responseText>0)
  26.  {
  27. l.style.background="red";
  28. l.focus();
  29.  
  30. } else
  31. {
  32. l.style.background="yellow";
  33. }
  34.  }
  35. } 
  36.  
  37. OAJAX.send('a='+l.value); 
  38.  }
  39. }
  40. ?>


Ten post edytował andulka 1.09.2008, 10:14:55
Go to the top of the page
+Quote Post

Posty w temacie
- SN@JPER^   [AJAX] - Czyli artykuł na temat polskich znaków !   3.05.2007, 14:36:12
- - TomASS   Ładnie Ja swoją drogą, akurat korzystając z AJAX...   4.05.2007, 08:26:15
- - SN@JPER^   Poprawione   4.05.2007, 09:50:50
- - NoiseMc   Ostatnio robie system komentarzy uzywajac Prototyp...   28.06.2007, 22:30:34
- - tommy4   Pozwolę sobie tutaj napisać, że do polskich znaków...   1.07.2007, 12:41:26
- - deirathe   A ja mam taki problemik, używam advAjax wszys...   20.07.2007, 11:52:31
- - andulka   A czy mógłby ktoś napisać, jak ustawić polskie zna...   7.08.2007, 21:19:39
- - yarpo   Ja ze swojej strony chciałbym zauważy...   21.08.2007, 22:36:36
- - kaniagandzowski   Witam Mam problem z kodowaniem znaków które ujawni...   10.09.2007, 12:07:31
- - lord_t   Witam, też miałem problem z polskimi zn...   28.12.2007, 19:05:07
|- - rafaelb   Cytat(lord_t @ 28.12.2007, 21:05:07 )...   19.02.2008, 12:20:19
- - ementos   WITAM! To mój pierwszy post na tym forum! ...   15.01.2008, 16:00:15
- - sarat20   Punkt drugi nie działa: >> xmlHttp.overrideM...   17.02.2008, 03:11:11
- - krzysiek_raven   Witam. Przez ostatniczas próbuję rozgryźć Ajaxa i...   7.04.2008, 20:03:40
- - inż. Piniol   Dla strony w ISO-8859-2. Po stronie PHP: ...   13.08.2008, 09:20:38
- - andulka   Napotkałem dziwny problem, korzystam z ajaxa, aby ...   25.08.2008, 12:55:56
- - skowron-line   Wczoraj całkiem przypadkiem trafiłem na 2 funkcje ...   30.12.2008, 09:21:15
- - esiek   u mnie każdy plik jaki otwieram przez ajax zaczyna...   18.09.2009, 23:45:34
- - rzymek01   za pierwszym razem też robiłem takie funkcje str_r...   19.09.2009, 09:09:12
- - esiek   Dzieki i przetestuje   19.09.2009, 20:38:14
- - Eraden   Rzymek01, czy mógłbyś to rozpisać? Jestem jeszcze ...   22.09.2009, 11:03:07
- - erix   https://developer.mozilla.org/pl/Dokumentac...odeU...   22.09.2009, 11:14:45
- - rzymek01   hmm. rozpisać przeczytaj co te funkcje robią i t...   22.09.2009, 22:46:10
- - marianooo   Witam, może ktoś rzeczowo i konkretnie napisać jak...   30.09.2010, 17:18:44
- - blasq   Witam chciałbym odnieść się do przesyłania polskic...   2.12.2010, 23:13:45
- - mate006   Wiem że odkopuję stary temat, ale już mi głowa pęk...   10.10.2011, 17:08:30
- - daniel1302   Dodaj od siebie 2 funkcje. W JSON miałem mnóstwo ...   31.01.2012, 10:01:47


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 20:25