Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] OOP + namespace
marcus753
post 6.11.2014, 12:40:37
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mam sobie taki kodzik i 2 pytania z nim związane:

  1. var main_namespace = {
  2.  
  3. ajax: function(){
  4.  
  5. this.name = null;
  6. this.pytania_array = null;
  7. this.wyniki_array = null;
  8.  
  9. this.pobierz_dane = function(){
  10. alert('n1'+this.name);
  11. $.ajax({
  12. url: "ajax.php",
  13. type: "POST",
  14. data: {
  15. name: this.name,
  16. akcja: 'pobierz'
  17. },
  18. success: function(result){
  19. alert('n2'+this.name);
  20. return JSON.parse(result);
  21. }
  22. });
  23. }
  24. }
  25.  
  26. }
  27.  
  28.  
  29.  
  30.  
  31. $(document).ready(function(){
  32.  
  33. ajax = new main_namespace.ajax();
  34. ajax.name = $('#mcreate_quiz').attr('name');
  35. ajax.pobierz_dane();
  36.  
  37. });


Będąc w funkcji zwracającej wynik z ajaxa jak mogę wyświetlić lub zmienić właściwość obiektu ajax ? dokładnie chodzi o tą linijke -> alert('n2'+this.name); w odpowiedzi dostaje undefined bo js pewnie myśli że chodzi o właściwość funkcji pobierz_dane a przecież chodzi o właściwośc funkcji wyżej.

Druga sprarawa, jak korzystając z przestrzeni nazw poprawnie stworzyć obiekt ajax i wywołać jego metodę pobierz_dane ? w mojej przestrzeni nazw stworzyć jakąś funkcję init() którą będę wywoływał po wczytaniu wszystkich elementów strony i w niej dopiero tworzyć obiekt ajax ?

Kod będę uruchamiał dołączając ten plik na stronie której struktury nigdy nie znam, nie chciałbym nadpisać czyiś zmiennych itp. dlatego chce wykorzystać przestrzenie nazw.

Ten post edytował marcus753 6.11.2014, 12:41:54


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
nospor
post 6.11.2014, 12:45:42
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ad1
Kod
var $this = this;
$.ajax({

                  url: "ajax.php",

                  type: "POST",

                  data: {

                      name: this.name,

                      akcja: 'pobierz'

                  },

                  success: function(result){

                      alert('n2'+$this.name); //TADA

                      return JSON.parse(result);

                }

            });


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
marcus753
post 6.11.2014, 12:49:14
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@nospor - myślałem o tym tylko teraz pytanie jak przypisać do zmiennej this.wyniki_array to co zwraca nam funkcja ajaxa ?


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
nospor
post 6.11.2014, 12:51:11
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No normalnie... przeciez masz już obiekt AJAXa w $this...

$this.wyniki_array = co tam sobie chcesz wpisac to se wpisuj. nikt nie broni


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
marcus753
post 6.11.2014, 13:15:17
Post #5





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


dzięki faktycznie w zmiennej this mam obiekt a więc kopiuje referencje, pierwotnie chciałem skopiować this.[zmienna] ale tutak skopiowałbym jedynie wartość...

faktycznie korzystacie z takiego rozwiązania ? chyba jeszcze nie spotkałem kopiowania zmiennych this do $this...


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
markuz
post 6.11.2014, 13:26:01
Post #6





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Ja spotkałem, używam i polecam bo innego rozwiązania w JavaScript nie znajdziesz.


--------------------
Go to the top of the page
+Quote Post
viking
post 6.11.2014, 13:26:58
Post #7





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W JS normalka tylko zazwyczaj nazywa się to self (z tym ostrożnie) albo that.
http://alistapart.com/article/getoutbindingsituations


--------------------
Go to the top of the page
+Quote Post
marcus753
post 6.11.2014, 14:09:45
Post #8





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


a mam jeszcze jedno pytanie, obiektem ajax pobieram jakieś dane z których będzie korzystał następny obiekt dymek

jak powinienem teraz stworzyć obiekt dymek aby widział on dane z obiektu ajax ? muszę go utworzyć dopiero po wczytaniu wszystkich danych ajaxem...


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:47