![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Zacznę od kodu:
Ten kod wywala mi błąd "this.parseView is not a function". Dodam, że jeżeli wywołam tą metodę bezpośrednio w metodzie getData() (a nie jako callback) to wszystko działa. Jeśli ktoś może mnie oświecić to będę zobowiązany. Z góry dziękuję za pomoc, pozdrawiam! -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 121 Pomógł: 26 Dołączył: 2.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, żę dzieje się tak dlatego, ponieważ this w ciele metody refreshPage nie odnosi się do obiektu klasy Chat, tylko do obiektu ajax. Kiedy wyrzucisz do konsoli FireBuga obiekt this w róznych miejscach, to zauważysz różnicę:
Kod function Chat() { this.url = 'data.html'; this.test = 'To jest obiekt Chat()'; console.log(this); this.getData = function() { var options = {url : this.url, success : this.refreshPage }; $.ajax( options ); } var parseView = function(){ alert("wonnaaa!"); } this.refreshPage = function( html ){ console.log(this); parseView(); } } $(document).ready(function() { chat = new Chat; chat.getData(); }); Przy pierwszym console.log masz obiekt chat, co można poznać po obecności składowej test. Przy następnym console.log opalonym już w ciele callbacka, masz już obiekt ajax jQuery - masz składowe global i type - porównaj z opcjami z manuala: jQuery. Zamieniłem metodę parseView() z publicznej na prywatną, jak widać działa. Jednym z rozwiązań będzie przekazanie metodzie this.parseView() obiektu klasy Chat jako parametru i w ciele metody operowanie już na nim. -------------------- Works for me => u mnie działa - blog o (o)programowaniu i nie tylko
meet.php - darmowe meetupy związane z PHP |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 1 Dołączył: 15.01.2003 Ostrzeżenie: (0%) ![]() ![]() |
Rozwiązaniem problemu nadpisywania this przez jQuery jest stworzenie sobie "kopii" tego obiektu w klasie a następnie używanie go zamiennie do this.
Kod function Chat()
{ aliasThis = this; ... } Ten post edytował jaco 14.05.2009, 12:35:40 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki
![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:06 |