Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [AJAX] - Czyli artykuł na temat polskich znaków !
SN@JPER^
post 3.05.2007, 14:36:12
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
TomASS
post 4.05.2007, 08:26:15
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Ładnie smile.gif

Ja swoją drogą, akurat korzystając z AJAXa mało razu miałem problemy z polskim znaczkami. Jak się zrobi wszystko w porządku i po kolei to nie powinno być problemu:


  1. <?php
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  3. xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');
  4. ?>

i do tego ewentualnie:
  1. <?php
  2. $query_kod = "SET NAMES latin2";
  3. ?>



Jedyną literówką którą wychwyciłem to:
  1. <?php
  2. $query_kod = "SET NAMES `atin2";
  3. //a powinno być
  4. $query_kod = "SET NAMES latin2";
  5. ?>


Na pewno komuś się Twoja porada przyda smile.gif


--------------------
Go to the top of the page
+Quote Post
SN@JPER^
post 4.05.2007, 09:50:50
Post #3





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

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


Poprawione biggrin.gif
Go to the top of the page
+Quote Post
NoiseMc
post 28.06.2007, 22:30:34
Post #4





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

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


Ostatnio robie system komentarzy uzywajac Prototype.js. Kodowanie ... niestety musze uzywac ISO-8859-2. Przy wysylaniu formularza zauwazylem, ze XMLHttpRequest wysyla UTF nawet jezeli w opcjach Ajax.Request - Prototype ustawie ISO. Na serwerze przekodowuje sobie UTF na ISO ale srednio podoba mi sie takie wyjscie.


--------------------
Go to the top of the page
+Quote Post
tommy4
post 1.07.2007, 12:41:26
Post #5





Grupa: Zarejestrowani
Postów: 288
Pomógł: 12
Dołączył: 2.12.2005

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


Pozwolę sobie tutaj napisać, że do polskich znaków w AJAXie można używać biblioteki iconv.

Strona PHP z której AJAX pobiera dane:

  1. <?php
  2.  
  3.  
  4. ?>
  5. ...
  6. <?php
  7.  
  8. $text = iconv("ISO-8859-2", "UTF-8", ob_get_contents());
  9. echo $text;
  10.  
  11. ?>


Po wysłaniu danych np. POST, a przed dodaniem ich do bazy, trzeba je odpowiednio przygotować do niej:

  1. <?php
  2. function prepare($text)
  3. {
  4. $text = iconv("UTF-8", "ISO-8859-2", $text);
  5. return $text;
  6. }
  7. ?>


Ten post edytował tommy4 13.07.2007, 12:30:50
Go to the top of the page
+Quote Post
deirathe
post 20.07.2007, 11:52:31
Post #6





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


A ja mam taki problemik, używam advAjax wszystkie pliki maja kodowanie utf-8 i w takim sa zapisane php nawet wysyła nagłówek ale jak wysyłam dane przez formularz to w ie i tak mam krzaki zamiast polskich znaków. O co chodzi?
php.php
  1. <?php
  2. header("Content-type: text/xml; charset=UTF-8");
  3. echo '<?xml version="1.0" encoding="UTF-8"?>';
  4. echo '<answer>'.$_REQUEST['data'].'</answer>';
  5.  
  6. ?>

index.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Untitled Document</title>
  5. <script type="text/javascript" src="ajax.js"></script>
  6. </head>
  7.  
  8. <form action="java script:setValue()">
  9. <input type="text" id="te" value="śśśśćźłśóśłśęę"/>
  10. <input type="submit" />
  11. </form>
  12. <div id="asasd"></div>
  13. <br/>
  14. <script type="text/javascript">
  15. function setValue(){
  16. advAJAX.get({
  17. url: "php.php?data="+document.getElementById('te').value,
  18. onSuccess : function(obj) { document.getElementById('asasd').innerHTML = obj.responseText; }
  19. });
  20. }
  21. </body>
  22. </html>

//pod ff działa wyśmienicie

Ten post edytował deirathe 20.07.2007, 11:57:48


--------------------
Kawałek mojego blogu
Everything should be as simple as possible but not simpler.
A Einstein
Go to the top of the page
+Quote Post
andulka
post 7.08.2007, 21:19:39
Post #7





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

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


A czy mógłby ktoś napisać, jak ustawić polskie znaki w skrypcie "Ajax dynamic list" ze strony: http://www.dhtmlgoodies.com/index.html?whichScr....

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

oraz

  1. <?php
  2. mysql_query("SET NAMES latin2");
  3. ?>

we właściwe miejsca wstawiłem, ale

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

już nie wiem, gdzie w ajax.js umieścić sad.gif
Go to the top of the page
+Quote Post
yarpo
post 21.08.2007, 22:36:36
Post #8





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 19.06.2007
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


Ja ze swojej strony chciałbym zauważyć, że skoro:
Kod
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

kolega używa na końcu / to znaczy najprawdopodobniej, że DOCTYPE mówi XHTML. W takim wypadku wydaje mi się, że słuszniejszym byłoby:

Kod
<meta http-equiv="Content-type" content="application/xhtml+xml; utf-8" />

(oczywiście mam na myśli application/xhtml+xml;, nie utf)

O czym [m. in.] można przeczytać tu:
http://pornel.net/xhtml

Co do reszty - ciekawe, dzięki. Sporo się dowiedziałem smile.gif

Ten post edytował yarpo 21.08.2007, 22:37:20
Go to the top of the page
+Quote Post
kaniagandzowski
post 10.09.2007, 12:07:31
Post #9





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 2.06.2006

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


Witam
Mam problem z kodowaniem znaków które ujawnia się przy wykorzystaniu AJAX.
Korzystam z biblioteki XAJAX, w której jest ustawione kodowanie na windows-1250 i to działa tzn. gdy jest aktualizowana strona przy pomocy AJAX, to tekst jest poprawnie wyświetlany z polskimi znakami lecz w tym tekście zawarty jest formularz z polami typu input.

Po wypełnieniu formularza i kliknięciu wyślij tekst w pisany w tych polach od razu jest rozwalony pojawia się takie coś – zamiast ala ma kota ąśół jest to ala ma kota ąśłó zami.

Dane z pól są wysyłane do metody w postaci tablicy przy pomocy takiego polecenia "xajax_xajax(xajax.getFormValues('nazwaformularza'));"
I metoda, które odbiera dane z formularza już dostaje błędne dane.

Eksperymentowałem z mianą danych w kodowaniu w bibliotece XAJAX
define ('XAJAX_DEFAULT_CHAR_ENCODING', 'windows-1250' );

na kodowanie iso-8859-2 -> efekt - tekst i tekst z pól formularza same krzaki
na kodowanie urf-8 to wartości z formularza było okej ale tekst wyświetlany przez AJAX był z krzakami.
kodwanie windows-1250 - jest poprawnie wyswietlany tekst lecz dane z formularza są w postaci krzaków.

Dodam że w każdej w szablonie widoku jest dodane kodowanie
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>

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

Szukałem rozwiązania na forum lecz poruszane tematy głównie tyczą się z problemami z bazą danych. A mój problem to z samą biblioteką XAJAX.




Udało mi się rozwiącać


$xajax = new xajax('/ajax/');
$xajax->setCharEncoding('ISO-8859-2');
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("processKontaktForm");

...

function processKontaktForm($aFormValues)
{
$objResponse = new xajaxResponse();
$objResponse->setCharEncoding('ISO-8859-2');
$send_email_res = sendKontaktEmail($aFormValues);
}

Należy się upewnić czy program, w którym piszemy kod ma ustawione też kodowanie na ISO-8859-2. Np w Zend musiałem zmienić kodowanie domyślne dla projektu.

Ten post edytował kaniagandzowski 10.09.2007, 13:59:05
Go to the top of the page
+Quote Post
lord_t
post 28.12.2007, 19:05:07
Post #10





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Witam,

też miałem problem z polskimi znakami. Używam advAJAX.
Andulka, może Ci to pomoże.

Nie pomogło mi dodanie w dwóch miejscach linijki:
  1. <?php
  2. xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');
  3. ?>


Polskie znaki pojawiły się dopiero po dodaniu:
  1. <?php
  2. obj.xmlHttpRequest.overrideMimeType('text/html; charset=ISO-8859-2');
  3. ?>


kod (zaczyna się około 283 linii)
CODE
if (obj.method == "POST" && typeof obj.xmlHttpRequest.setRequestHeader != "undefined") {
obj.xmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
obj.xmlHttpRequest.send(obj.queryString);
} else if (obj.method == "GET")
obj.xmlHttpRequest.send('');
};


zamieniłem na:
CODE
if (obj.method == "POST" && typeof obj.xmlHttpRequest.setRequestHeader != "undefined") {
obj.xmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
obj.xmlHttpRequest.send(obj.queryString);
obj.xmlHttpRequest.overrideMimeType('text/html; charset=ISO-8859-2');
} else if (obj.method == "GET"){
obj.xmlHttpRequest.send('');
obj.xmlHttpRequest.overrideMimeType('text/html; charset=ISO-8859-2');
}
};


I pomogło. Mam nadzieję, że komuś się to przyda.

edit: Działa w FF, w IE i Operze nie.

Ten post edytował lord_t 29.12.2007, 09:13:10


--------------------
Go to the top of the page
+Quote Post
ementos
post 15.01.2008, 16:00:15
Post #11





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.01.2008

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


WITAM! To mój pierwszy post na tym forum!
Od dawna mam problemy z polskimi znakami z bazy danych przez ajax'a!
Mam pytanie: o jakiej z bibliotek Ajaxa piszecie??
Ja znam "sajax", "advajax"(troszkę)
Z kąd mogę pobrać bibliotekę o której mowa w pierwszym poście?
Pozdrawiam!
Go to the top of the page
+Quote Post
sarat20
post 17.02.2008, 03:11:11
Post #12





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.02.2008

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


Punkt drugi nie działa:
>> xmlHttp.overrideMimeType('text/html; charset=ISO-8859-2');)
wyskakuje bład, że metoda nie istnieje (testowane na IE i firefoxie).

Występowanie krzaczków w polskich literach można podzielić na 2 etapy:
1. Wysyłanie danych przez obiekt xmlhttprequest. Np przesyłam łańcuch znaków "wkrętarka" i w skrypcie php otrzymuję "wkr%u0119tarka". Do zamiany tych znaków używam poniższej funkcji:

  1. <?php
  2. function charset_utf_fix($string)
  3. {
  4. $utf_iso = array(
  5.  "xc4x85" => "xb1",
  6.  "xc4x84" => "xa1",
  7.  "xc4x87" => "xe6",
  8.  "xc4x86" => "xc6",
  9.  "xc4x99" => "xea",
  10.  "xc4x98" => "xca",
  11.  "xc5x82" => "xb3",
  12.  "xc5x81" => "xa3",
  13.  "xc3xb3" => "xf3",
  14.  "xc3x93" => "xd3",
  15.  "xc5x9b" => "xb6",
  16.  "xc5x9a" => "xa6",
  17.  "xc5xba" => "xbc",
  18.  "xc5xb9" => "xac",
  19.  "xc5xbc" => "xbf",
  20.  "xc5xbb" => "xaf",
  21.  "xc5x84" => "xf1",
  22.  "xc5x83" => "xd1",
  23. // xmlhttprequest uses different encoding
  24.  "%u0104" => "xA1",
  25.  "%u0106" => "xC6",
  26.  "%u0118" => "xCA",
  27.  "%u0141" => "xA3",
  28.  "%u0143" => "xD1",
  29.  "%u00D3" => "xD3",
  30.  "%u015A" => "xA6",
  31.  "%u0179" => "xAC",
  32.  "%u017B" => "xAF",
  33.  "%u0105" => "xB1",
  34.  "%u0107" => "xE6",
  35.  "%u0119" => "xEA",
  36.  "%u0142" => "xB3",
  37.  "%u0144" => "xF1",
  38.  "%u00D4" => "xF3",
  39.  "%u015B" => "xB6",
  40.  "%u017A" => "xBC",
  41.  "%u017C" => "xBF"
  42. );
  43. return str_replace(array_keys($utf_iso), array_values($utf_iso), $string);
  44. }
  45. ?>


Wystarczy druga częsć tablicy, pierwsza częsć działa przy dekodowaniu utf-8 w plikach/dokumentach, ale obiekt xmlhttprequest koduje dane w inny sposób.

2. Odbieranie danych przez obiekt xmlhttprequest. W skrypcie php należy wysłać nagłówek "Content-type":

  1. <?php
  2. header('Content-Type: text/html; charset=ISO-8859-2');
  3. ?>


Ten post edytował sarat20 17.02.2008, 03:44:38
Go to the top of the page
+Quote Post
rafaelb
post 19.02.2008, 12:20:19
Post #13





Grupa: Zarejestrowani
Postów: 49
Pomógł: 2
Dołączył: 17.01.2004

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


Cytat(lord_t @ 28.12.2007, 21:05:07 ) *
zamieniłem na:
CODE
if (obj.method == "POST" && typeof obj.xmlHttpRequest.setRequestHeader != "undefined") {
obj.xmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
obj.xmlHttpRequest.send(obj.queryString);
obj.xmlHttpRequest.overrideMimeType('text/html; charset=ISO-8859-2');
} else if (obj.method == "GET"){
obj.xmlHttpRequest.send('');
obj.xmlHttpRequest.overrideMimeType('text/html; charset=ISO-8859-2');
}
};


I pomogło. Mam nadzieję, że komuś się to przyda.
edit: Działa w FF, w IE i Operze nie.


Po dodaniu w FF 2.0.0.12
obj.responseXML has no properties" title="Zobacz w manualu PHP" target="_manual
a pod IE6
Obiekt nie obsługuje tej wlaściwości lub metody" title="Zobacz w manualu PHP" target="_manual

tylko że ja dodałem
Kod
obj.xmlHttpRequest.overrideMimeType('text/html; charset=UTF-8');
Go to the top of the page
+Quote Post
krzysiek_raven
post 7.04.2008, 20:03:40
Post #14





Grupa: Zarejestrowani
Postów: 86
Pomógł: 0
Dołączył: 28.09.2007

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


Witam.

Przez ostatniczas próbuję rozgryźć Ajaxa i mam teraz problem z kodowaniem znaków. W momencie gdy pobieram tekst lub wywołuje skrypt PHP poprzez Ajaxa, to pojawiają mi się krzaczki zamiast polskich znaków. Wszystkie pliki zapisuje w utf-8. Problem pojawia się tylko w przeglądarce Firefox. TUTAJ jest stronka na której testuję. Wszytko mam ustawione na utf-8 i nie mam pojęcia czemu nie chce działać...
Go to the top of the page
+Quote Post
inż. Piniol
post 13.08.2008, 09:20:38
Post #15





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 13.08.2008

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


Dla strony w ISO-8859-2.

Po stronie PHP:

  1. <?php
  2. function AjaxISO($AStr)
  3. {
  4.  $ARRPLISO = array('%B1','%E6','%EA',
  5. '%B3','%F1','%F3','%B6','%BC','%BF','%A1','%C6',
  6. '%CA','%A3','%D1','%D3','%A6','%AC','%AF');
  7.  $ARRPLUTF16JS = array("%u0105","%u0107","%u0119",
  8. "%u0142","%u0144","%u00F3","%u015B","%u017A","%u017C",
  9. "%u0104","%u0106","%u0118","%u0141","%u0143","%u00D3",
  10. "%u015A","%u0179","%u017B");
  11.  
  12.  $AStr = urlencode($AStr);
  13.  $AStr = str_replace($ARRPLISO, $ARRPLUTF16JS, $AStr);
  14.  return $AStr;
  15. }
  16. ?>


Zwracane teksty puszczamy przez powyższą funkcję.

Po stronie JS:

  1. function AjaxISO(tekst)
  2. {
  3. tekst = unescape(tekst);
  4. return tekst.replace(/\+/g, " ");
  5. }
  6.  
  7. ...
  8.  
  9. var tmp_req = AjaxISO(page_request.responseText);

Sprawdzone pod: IE 6/7, Firefox 2/3, Opera.

Ten post edytował inż. Piniol 13.08.2008, 09:23:33
Go to the top of the page
+Quote Post
andulka
post 25.08.2008, 12:55:56
Post #16





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
skowron-line
post 30.12.2008, 09:21:15
Post #17





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Wczoraj całkiem przypadkiem trafiłem na 2 funkcje które mogą pomóc w walce z polskimi znakami dla tych którzy się już poddali.
http://jdstiles.com/java/cct.html


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
esiek
post 18.09.2009, 23:45:34
Post #18





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 6.11.2008
Skąd: Warszawa

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


u mnie każdy plik jaki otwieram przez ajax zaczyna się od

  1. header("Content-Type: text/html; charset=iso-8859-2");



ale zauwazylem ze po dodaniu do MySQL danych z polskimi znakami mialem znaczku typu %u106 zamiast polskiej litery to napisalem prosta funkcje winksmiley.jpg

  1. function AJAX_pl_znaki($string)
  2. {
  3. $przed= array('%u0105','%u0107','%u0119','%u0142','%u0144','ó','%u015B','%u017A','%u017C',
  4. '%u0104','%u0106','%u0118','%u0141','%u0143','Ó','%u015A','%u0179','%u017B');
  5. $po= array("ą","ć","ę","ł","ń","ó","ś","ź","ż",
  6. "Ą","Ć","Ę","Ł","Ń","Ó","Ś","Ź","Ż");
  7.  
  8. $string = str_replace($przed, $po, $string);
  9. return $string;
  10. }
  11.  




przepuszczam przez nią zapisane już dane winksmiley.jpg

Pozdrawiam i mam nadzieje że komuś się przyda winksmiley.jpg

Ten post edytował esiek 18.09.2009, 23:46:03


--------------------
allebhp.pl
Go to the top of the page
+Quote Post
rzymek01
post 19.09.2009, 09:09:12
Post #19





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


za pierwszym razem też robiłem takie funkcje str_replace, ale potem się skapnąłem, że się nie opłaca, bo już są takie funkcje zrobione i mamy to za darmola smile.gif

oczywiście wszystko jest na utf-8,
przy wysyłaniu zapytania ajaxem: encodeURIComponent
przy odbieraniu przez php: rawurldecode

i nie ma żadnych krzaczków


--------------------
:]
Go to the top of the page
+Quote Post
esiek
post 19.09.2009, 20:38:14
Post #20





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 6.11.2008
Skąd: Warszawa

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


Dzieki i przetestuje smile.gif


--------------------
allebhp.pl
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 20:39