Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z przetworzeniem pobranych danych GET'em
Forum PHP.pl > Forum > Po stronie przeglądarki
TajnyCzek
Cześć! Mam mały problem ;/
Mianowicie mam problem z przetworzeniem danych z serwera po wysłaniu żądania GET.
Mój Kod wygląda tak:
CODE
function httpGet(theUrl){
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", theUrl, true);
xmlHttp.onreadystatechange = handleReadyStateChange;
xmlHttp.send(null);

function handleReadyStateChange() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
document.getElementById("response").innerHTML=xmlHttp.responseText;
}
}
}
}


ta funkcja działa mi bez zarzutu. Robię requesta do strony i wynik wyświetal mi się na stronie w postacji takiej:
  1. {
  2. "id": "1388744431444806"
  3. }


i to jest obiekt, albo JSON.

Chciałbym pobrać zawartość ID i przypisać do jakieś zmien
Próbowałem przez return w funkcji i później przypisać to do jakieśzmiennej podczas wywołania i odwołać się do właściwości ID, ale gdy próbuje wyświetlić to undefined mam ;/

Kto wie jak pobrać zawrtość właściwości id?
Kshyhoo
PHP działa po stronie serwera nie przeglądarki, przenoszę.

A czekaj, to JS smile.gif
trueblue
  1. var obj=JSON.parse(xmlHttp.responseText);
  2. alert(obj.id);
TajnyCzek
DZIĘKI WIELKIE MISTRZU! Problemik rozwiązany! smile.gif

A jeszcze mam pytanie, jak zwrócić własiwość id?
Bo funkcjia jest zagnieżdżona w funkcji i to nie wiem jak z tego wyciągnąć dane.. ;/
Dopisałem cośtakiego, ale not work ;/
  1. function httpGet(theUrl){
  2. var xmlHttp = null;
  3. xmlHttp = new XMLHttpRequest();
  4. xmlHttp.open("GET", theUrl, true);
  5. xmlHttp.onreadystatechange = handleReadyStateChange;
  6. xmlHttp.send(null);
  7.  
  8. function handleReadyStateChange() {
  9. if (xmlHttp.readyState == 4) {
  10. if (xmlHttp.status == 200) {
  11. var obj = JSON.parse(xmlHttp.responseText);
  12. return obj.id;
  13. }
  14. }
  15. }
  16. }
trueblue
Przy asychronicznym ajax nie ma czegoś takiego jak zwracanie wartości, bo po wywołaniu funkcji z żądaniem ajax wykonywany jest równolegle dalszy kod.
Możesz użyć tzw. funkcji callback.

  1. var funkcjaRobiacaCosPoOdpowiedzi=function(dane) {
  2. alert(dane);
  3. }
  4.  
  5. function httpGet(theUrl,callback){
  6. var xmlHttp = null;
  7. xmlHttp = new XMLHttpRequest();
  8. xmlHttp.open("GET", theUrl, true);
  9. xmlHttp.onreadystatechange = handleReadyStateChange;
  10. xmlHttp.send(null);
  11.  
  12. function handleReadyStateChange() {
  13. if (xmlHttp.readyState == 4) {
  14. if (xmlHttp.status == 200) {
  15. var obj = JSON.parse(xmlHttp.responseText);
  16. callback.apply(this,[obj.id]);
  17. }
  18. }
  19. }
  20. }
  21. httpGet('jakis_url.pl',funkcjaRobiacaCosPoOdpowiedzi);

I tu lepiej byłoby przekazać całą odpowiedź do tej funkcji i tam parsować JSON.
TajnyCzek
osz kurdę, to jeszcze dużo muszę poczytać o asynchornicznym ajaxie smile.gif
Półki co to dziękuje za pomoc i łapę się za jakieś pomocnicze lektury smile.gif
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.