![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 1.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
no cóż, mam sobie taką oto klasę:
CODE
i problem jest taki, że w momencie 1 (metoda getData) pole tekst ma taką wartość, jakiej oczekuję: zawartość pliku, lecz, gdy już chcę zwrócić tą wartość w celu późniejszego wykorzystania, otrzymuję 'a', a nie zawartość pliku. Ktoś wie, jak sobie z tym poradzić/czemu to nie działa tak, jak ja chcę? P.S. metoda insertData działa dokładnie tak jak oczekuję: wstawia zawartość pliku do diva, czego tylko zechcę |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Gdyż this ma w tym momencie inną wartość...
Skorzystaj z: apply - https://developer.mozilla.org/en/JavaScript.../Function/Apply Lub prościej: Kod that = this; //<---
this.getData = function (zrodlo) { request.tekst = 'b'; request.open("GET", zrodlo, true); request.onreadystatechange = function () { if (request.readyState == 4) { that.tekst = request.responseText; //1 //<--- } } request.send(null); return this.tekst; //2 Ten post edytował kamil4u 1.10.2010, 12:33:01 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 1.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
CODE
kod, który dałeś, nie działa... tzn, działa, ale nie tak jak powinien... co ciekawe: zwrócone jest a, ale alert wyświetla dokładnie, to co mnie interesuje... no cóż, zrobiłem to tak, że stworzyłem diva z display: none, i tam ląduje zawartość interesującego mnie pliku, choć nie jest toto rozwiązanie, które mnie satysfakcjonuje |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Bo nie rozumiesz idei asynchroniczności...
Masz metodę getData w której jest wysłany request przez ajax`a i zdefiniowana jest funkcja wykonywana przy zdarzeniu readyStateChange, która dopiero z przypadku dostania odpowiedzi zmienia this.tekst, oczywiście zdarzenie jest wykonywane swoim tokiem, bo funkcja wykonywana podczas wystąpienie tego zdarzenia jest jedynie w tym miejscu zdefiniowana a nie wykonana a więc w czasie dojścia do lini 12: Kod return this.tekst; this.tekst nie ma możliwości właściwie (teoretycznie jest jeśli zapytanie zostało wysłane i odebrane w setnych częściach sekundy) przybrać stan tego jaki ma zostać przypisany do niego z ajax`owego requesta. W sumie requestów synchronicznych nigdy nie wykonywałem ale powinno pomóc ![]() Ten post edytował #luq 1.10.2010, 22:35:41 -------------------- Moja gra - scraby.io
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 1.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
ok, dzięki wielkie
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 15:37 |