Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX] serializacja (?)
Forum PHP.pl > Forum > Przedszkole
peter13135
Zrobiłem bardzo głupi błąd :/
Mianowicie piszę skrypt forum (już chyba drugi rok) i sporo jest tam ajaxa, początkowo był to xajax, niedawno przerobiłem to na swojego prostego frameworka ajax.

funkcja do ajaxa (nie szukajcie błędów, czytajcie dalej) :

  1. //ajax function
  2. var xmlhttp;
  3. if (window.XMLHttpRequest)
  4. {// code for IE7+, Firefox, Chrome, Opera, Safari
  5. xmlhttp=new XMLHttpRequest();
  6. }
  7. else
  8. {// code for IE6, IE5
  9. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  10. }
  11. xmlhttp.onreadystatechange = function()
  12. {//Call a function when the state changes.
  13. if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
  14. {
  15. eval(xmlhttp.responseText);
  16. //alert(xmlhttp.responseText);
  17. }
  18. }
  19. function ajax_post(url, params, get)
  20. {
  21. xmlhttp.abort();
  22. alert(params);
  23. xmlhttp.open("POST", url + '?ajax=1&' + get, true);
  24. xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  25. xmlhttp.setRequestHeader("Content-length", params.length);
  26. xmlhttp.setRequestHeader("Connection", "close");
  27. xmlhttp.send(params);
  28. }



funkcję tą wywołuję w taki sposób (taki mały przykład)
  1. <button onclick="ajax_post('plik.php', 'wartosc=' + document.getElementById('JakasTextarea').value)">kliknij tutaj</button>


funkcja działa elegancko... no prawie, jest jedno "ale"

jeśli jakasTextarea będzie miała zawartość typu:
Kod
Witam wszystkich userów, czy ktoś mi powie do czego służy znacznik & w php ?


to wtedy drugi parametr dla funkcji ajax_post będzie wyglądał tak:
Kod
wartosc=Witam wszystkich userów, czy ktoś mi powie do czego służy znacznik & w php ?


a skrypt php :
  1. if(isset($_POST['wartosc']))
  2. {
  3. echo $_POST['wartosc']);
  4. }

wyświetli tylko:
Kod
Witam wszystkich userów, czy ktoś mi powie do czego służy znacznik

czyli nie to co oczekiwałem

Jak proponujecie rozwiązać ten problem ?
peter13135
czyli zamiast

  1. <button onclick="ajax_post('plik.php', 'wartosc=' + document.getElementById('JakasTextarea').value)">kliknij tutaj</button>

ma być
  1. <button onclick="ajax_post('plik.php', 'wartosc=' + encodeURIComponent(document.getElementById('JakasTextarea').value))">kliknij tutaj</button>


?
nie chciałbym potem kilkarazy tego przerabiać

Ok, zakładam że tak. W każdyb bądź razie, uważam że to nie najlepszy pomysł żeby tak pisać:
  1. 'wartosc=' + encodeURIComponent(document.getElementById('JakasTextarea').value) + '&wartosc2=' + encodeURIComponent(document.getElementById('jakisDiv').innerHTML)

myślałem o tym, żeby wrzucić to do tablicy i potem by ajax_post to przerabiał na string.... tylko że jak zrobić taką tablicę ?
  1. Array("wartosc"=>document.getElementById('aaa').value);
nie działa. Macie jakieś pomysły ?
Crozin
Podstawy JS... od kiedy to niby tablice w JS obsługują indeksy inne niż numeryczne? Dlaczego nie skorzystasz z jQuery, DOJO, MooTool czy czegoś tam jeszcze innego co udostępnia sensowny interfejs do obsługi AJAX-a?
peter13135
Cytat(Crozin @ 24.05.2011, 15:24:23 ) *
Podstawy JS... od kiedy to niby tablice w JS obsługują indeksy inne niż numeryczne?

Nie wiem od kiedy, ale obsługują.
tablica["lalala"] = "blabla";

  1. Dlaczego nie skorzystasz z jQuery, DOJO, MooTool czy czegoś tam jeszcze innego co udostępnia sensowny interfejs do obsługi AJAX-a?

Bo nie chcę budować mostu nad kałużą i mam taki kaprys że chce to zrobić w js smile.gif
yevaud
json

[JAVASCRIPT] pobierz, plaintext
  1. var assarray = {'nazwa': wartosc, 'nazwa2': 'jakis string'}
  2.  
  3. for (var i in assarray)
  4. alert(assarray[i]);
[JAVASCRIPT] pobierz, plaintext


generalnie w js tablice asocjacyjne to takie nie do konca tablice, a obiekty to takie nie do konca nie-tablice wink.gif
peter13135
Wygląda nieźle.. ale czy da się odczytać zarówno klucz jak i wartość? niestety nic nie wygooglałem sad.gif
celbarowicz
W JQ dzieje się to samo. To jest chyba cena-> "Strona bez przeładowania".
CuteOne
jquery ajax, jquery json, jquery post json ... pierwszych pięć poradników odpowie na wszystkie pytania...
celbarowicz
Czy zamiast & wpiszesz taki tekst 'xxxxx' ?
peter13135
Niestety, ale na podstawie kursu jQuery, nie potrafię zrobić tego w js.
Proszę, aby ktoś mi napisał, jak odczytać klucz w obiekcie JSON za pomocą samego js, bez żadnych frameworków.
dla przykładu :
  1. var jsonObject = {'nazwa': 'wartosc'};

chcę odczytać stąd 'nazwa'
zegarek84
w tym poście masz odpowiedź:
http://forum.php.pl/index.php?s=&showt...st&p=866118

wartość zmiennej "i" przechowuje klucz a sama konstrukcja pętli for(i in obiekt) jest odpowiednikiem pętli foreach z PHP...
Crozin
Cytat
Nie wiem od kiedy, ale obsługują.
tablica["lalala"] = "blabla";
Bo dla każdego obiektu w JS - a wszystko jest obiektem* - możesz dodać nowe właściwości. To zadziała tak samo dobrze z obiektem RegExp, String czy Console. Powinieneś po prostu użyć czystego obiektu (Object), który w zamyśle służy właśnie do tego - można przy jego pomocy tworzyć coś na wzór tablic asocjacyjnych.
Cytat
Bo nie chcę budować mostu nad kałużą i mam taki kaprys że chce to zrobić w js
Pomijając fakt, że te biblioteki same w sobie są zrobione w JS to czemu nie? Jak masz go dostępnego pod ręka i w praktyce jego użycie nie kosztuje nic?

* A to co nie jest (typy proste) obsługuje dynamiczne rzutowanie na odpowiedni typ obiektowy w tle.
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.