Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] OOP + namespace
Forum PHP.pl > Forum > Przedszkole
marcus753
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.
nospor
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);

                }

            });
marcus753
@nospor - myślałem o tym tylko teraz pytanie jak przypisać do zmiennej this.wyniki_array to co zwraca nam funkcja ajaxa ?
nospor
No normalnie... przeciez masz już obiekt AJAXa w $this...

$this.wyniki_array = co tam sobie chcesz wpisac to se wpisuj. nikt nie broni
marcus753
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...
markuz
Ja spotkałem, używam i polecam bo innego rozwiązania w JavaScript nie znajdziesz.
viking
W JS normalka tylko zazwyczaj nazywa się to self (z tym ostrożnie) albo that.
http://alistapart.com/article/getoutbindingsituations
marcus753
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...
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.