Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Polskie znaki
Forum PHP.pl > Forum > XML, AJAX > AJAX
ksenonlogin
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. }
skowron-line
Czytałeś questionmark.gif
Temat: AJAX Czyli artykul na temat polskich znakow
ksenonlogin
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. }
skowron-line
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']);

ksenonlogin
To wiem, ale chciałbym to zrobić po stronie przeglądarki w skrypcie przedstawionym prze zemnie.
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.