Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Polskie znaki, skrypt niszczy polskie znaki POST
ksenonlogin
post 3.03.2012, 14:45:03
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 3
Dołączył: 29.10.2011

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


Witam

Poniżej znajduje się skrypt który ma za zadanie przesłać dane z formularza "w tle"-bez przeładowywania strony (metodą POST) do skryptu PHP.
Wszystko jest ok jednak skrypt powoduje zamianę polskich znaków na nieczytelny ciąg np.: "śćżźęął" zamienia na "%u015B%u0107%u017C%u017A%u0119%u0105%u0142"

  1. function xmlhttpPost(strURL, formname, responsediv, responsemsg) {
  2. var xmlHttpReq = false;
  3. var self = this;
  4. if(window.XMLHttpRequest) {
  5. self.xmlHttpReq = new XMLHttpRequest();
  6. } else if(window.ActiveXObject) {
  7. self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
  8. }
  9. self.xmlHttpReq.open('POST', strURL, true);
  10. self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  11. self.xmlHttpReq.onreadystatechange = function() {
  12. if(self.xmlHttpReq.readyState == 4) {
  13. updatepage(self.xmlHttpReq.responseText, responsediv);
  14. } else {
  15. updatepage(responsemsg, responsediv);
  16. }
  17. }
  18. self.xmlHttpReq.send(getquerystring(formname));
  19. }
  20.  
  21. function getquerystring(formname) {
  22. var form = document.forms[formname];
  23. var qstr = "";
  24. function GetElemValue(name, value) {
  25. qstr += (qstr.length > 0 ? "&" : "") + escape(name).replace(/\+/g, "%2B") + "=" + escape( value ? value : "").replace(/\+/g, "%2B");
  26. }
  27.  
  28. var elemArray = form.elements;
  29. for(var i = 0; i < elemArray.length; i++) {
  30. var element = elemArray[i];
  31. var elemType = element.type.toUpperCase();
  32. var elemName = element.name;
  33. if(elemName) {
  34. if(elemType == "TEXT" || elemType == "TEXTAREA" || elemType == "PASSWORD" || elemType == "BUTTON" || elemType == "RESET" || elemType == "SUBMIT" || elemType == "FILE" || elemType == "IMAGE" || elemType == "HIDDEN")
  35. GetElemValue(elemName, element.value);
  36. else if(elemType == "CHECKBOX" && element.checked)
  37. GetElemValue(elemName, element.value ? element.value : "On");
  38. else if(elemType == "RADIO" && element.checked)
  39. GetElemValue(elemName, element.value);
  40. else if(elemType.indexOf("SELECT") != -1)
  41. for(var j = 0; j < element.options.length; j++) {
  42. var option = element.options[j];
  43. if(option.selected)
  44. GetElemValue(elemName, option.value ? option.value : option.text);
  45. }
  46. }
  47. }
  48. return qstr;
  49. }
  50.  
  51. function updatepage(str, responsediv) {
  52. document.getElementById(responsediv).innerHTML = str;
  53.  
  54. }


Ten post edytował ksenonlogin 3.03.2012, 14:47:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
skowron-line
post 3.03.2012, 14:49:28
Post #2





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

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


Czytałeś questionmark.gif
Temat: AJAX Czyli artykul na temat polskich znakow


--------------------
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
ksenonlogin
post 3.03.2012, 15:22:26
Post #3





Grupa: Zarejestrowani
Postów: 123
Pomógł: 3
Dołączył: 29.10.2011

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


Przeczytałem, sprawdziłem i nic.

Powiem tak, jestem PHP-wcem i mało znam się na JavaScript (podstawy), więc pomóżcie w obróbce tego kodu nawet nie musi być to konieczne ze zmiana całego kodu, może to być nawet funkcja podana niżej (tylko nie wiem jak podłączyć ją do przedstawionego wyżej skryptu)

  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. }
Go to the top of the page
+Quote Post
skowron-line
post 3.03.2012, 15:44:42
Post #4





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

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


Cytat(ksenonlogin @ 3.03.2012, 15:22:26 ) *
Powiem tak, jestem PHP-wcem


To chyba za dużo powiedziane skoro nie wiesz jak skrypt php podpiąć pod odbierane dane.
Skoro odbierasz dane z $_POST to chyba prostę
  1. $_POST['nazwa'] = "%u015B%u0107%u017C%u017A%u0119%u0105%u0142";
  2. echo AJAX_pl_znaki($_POST['nazwa']);



--------------------
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
ksenonlogin
post 3.03.2012, 15:49:18
Post #5





Grupa: Zarejestrowani
Postów: 123
Pomógł: 3
Dołączył: 29.10.2011

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


To wiem, ale chciałbym to zrobić po stronie przeglądarki w skrypcie przedstawionym prze zemnie.
Go to the top of the page
+Quote Post

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: 19.07.2025 - 19:57