Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Smarty + js przekazywanie tablic
mis
post 23.07.2013, 22:52:33
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 25.04.2010

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


Hej, mam nadzieje, że dobry dział.
Od paru godzin męcze się z problemem.

Przesyłam do tpl tablice i w js chciałbymwyświetlić wartości z tej tablicy:
gdy robie:
  1. alert('{/literal}{$impreza["miejsce"][2]}{literal}');


Wszystko jest ok, ale gdzy zrobię:
  1. var i = 2;
  2. alert('{/literal}{$impreza["miejsce"]['+i+']}{literal}');


wyświetla mi pustke. Zawsze starałem się sam szukać rozwiazania, ale teraz juz nie mam pomysłów i siły.
mam nadzieje, że ktoś trzeźwym okiem podrzuci pomysł
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
widmo_91
post 23.07.2013, 23:38:28
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


Nie rozumiem pewnych rzeczy, używasz smartów i odnosisz się do tablicy asocjacyjnej w ten sposób: {$impreza["miejsce"][2]}?
Spróbuj:
  1. var i = 2;
  2. alert({/literal}{$impreza["miejsce"][i]}{literal});


albo

  1. var i = 2;
  2. alert({/literal}{$impreza.miejsce[i]}{literal});


Ten post edytował widmo_91 23.07.2013, 23:40:41
Go to the top of the page
+Quote Post
mis
post 23.07.2013, 23:45:51
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 25.04.2010

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


zauważm, że to jest w javascript.

z tym alertem to jest dla testów, który napisałem, ponieważ niechodziło mi wyśweitlanie w pętli.
Chodzi o to, że gdy wpisze na sztywno index w tablicy, jest ok, ale gdy użyje zmiennej(czy to z pętli czy na sztywno), wtedy nie pojawia się nic.
Go to the top of the page
+Quote Post
widmo_91
post 23.07.2013, 23:50:12
Post #4





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


To skąd pochodzi zmienna $impreza["miejsce"] z javascriptu, smartow czy phpa w skrypcie?
Go to the top of the page
+Quote Post
mis
post 23.07.2013, 23:57:53
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 25.04.2010

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


z php przekazuje, przepraszam mój błąd.
Ale jeszcze raz mówie, tablica przesyłana jest ok, wyświetlana(na sztywno ze wspisaniem indeksu) też jest prawidłowo (czy to jako alert czy jako tekst w html), ale w js jak dam jako pętla, lub jak w 1 poście var i =2 i jako index dam i, to sie nie wyświetla nic
Go to the top of the page
+Quote Post
widmo_91
post 24.07.2013, 00:04:35
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


to spróbuj:

  1. {/literal}
  2. alert({$impreza["miejsce"][i]});
  3. {literal}
Go to the top of the page
+Quote Post
mis
post 24.07.2013, 00:17:36
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 25.04.2010

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


jest błąd skadni js, w ogole nie wyświetla nawet alerta.
Go to the top of the page
+Quote Post
widmo_91
post 24.07.2013, 00:23:12
Post #8





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


Właśnie sobie zdałem sprawę, że to co chcesz zrobić jest nie realne bo można przekazać zmienne z phpa do javascriptu a nie odwrotnie!

Przykładowe rozwiazanie:

  1. $smarty->assign("do_javascript", json_encode($impreza));


  1. var impreza = {$do_javascript};
  2. for (i = 0; i < impreza['miejsce'].length; i++) {
  3. alert(impreza["miejsce"][i]);
  4. }
  5.  
  6.  


Ten post edytował widmo_91 24.07.2013, 00:31:31
Go to the top of the page
+Quote Post
mis
post 24.07.2013, 00:34:13
Post #9





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 25.04.2010

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


wydaje mi się, że się mylisz.
Ja nie przekazuje zmiennej, tylkoe chce odczytać zmienną, a to różnica.

Może mało jasno pisze, postaram się bardziej opisać.
w PHP przesyłam tablice do tpl:

  1. $smarty->assign("impreza", $impreza);


w tpl chce na potrzeby testu, wyświetlić za pomocą javascriptu (w alercie) zmienną z pola 3 więc daje :

  1. alert('{/literal}{$impreza["miejsce"][2]}{literal}');

i jest świetnie, wyświetla to co chce, ale chce zamiast indexu na sztywo, dać jako zmienną :

  1. var i = 2;
  2. alert('{/literal}{$impreza["miejsce"]['+i+']}{literal}');


i w tym wypadku nie działa
Go to the top of the page
+Quote Post
widmo_91
post 24.07.2013, 00:45:06
Post #10





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


Bo można przekazać zmienną z phpa do javascriptu:
alert('{/literal}{$impreza["miejsce"][2]}{literal}');

Ale nie można odwrotnie czyli z javascriptu do PHPa:
var i = 2;
alert('{/literal}{$impreza["miejsce"]['+i+']}{literal}');


To co chcesz zrobić jest nie realne.
Go to the top of the page
+Quote Post
mis
post 24.07.2013, 00:48:15
Post #11





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 25.04.2010

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


tylko tunie chce przekazywać, ale się odwołać do tablicy o zadeklarowanym indeksie, ale możliwe, ze masz racje.
tylko teraz msuze to obejść, ale Twój sposób mi się nie sprawdzi
Go to the top of the page
+Quote Post
widmo_91
post 24.07.2013, 00:53:39
Post #12





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


Nie chodzi o przekazywanie a jednak przekazujesz, nieświadomie to nieświadomie ale przekazujesz.

  1. alert('{/literal}{$impreza["miejsce"][2]}{literal}');


W tym przypadku przekazujesz zmienna phpa $impreza["miejsce"][2] do javascriptu więc wszystko jest OK

a w tym:

  1. var i = 2;
  2. alert('{/literal}{$impreza["miejsce"]['+i+']}{literal}');


Próbujesz przekazać zmienną javascriptu i do php a to nie realne bo gdy javascript zacznie sie wykonywać to php już zakończy swoją pracę.

Musisz przekazać zmienną z phpa do javascriptu przykładowe rozwiązanie masz na górze:

  1. $smarty->assign("do_javascript", json_encode($impreza));

  1. var impreza = {$do_javascript};
Go to the top of the page
+Quote Post
mis
post 24.07.2013, 00:56:35
Post #13





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 25.04.2010

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


ok wydawało mi się to 'oczywiste' ze powinien się odwołać przy zadeklrawowanej zmiennej jako index.

wracając do Twojego sposobu.
widziałem gdzieś ten sposób, jednak teraz mam błąd składni przy
var impreza = {$do_javascript};
Go to the top of the page
+Quote Post
widmo_91
post 24.07.2013, 00:58:38
Post #14





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


Nie wiem jak wygląda twój skrypt ale mogę się domyślać, że może pomóc

{/literal}
var impreza = {$do_javascript};
{literal}
Go to the top of the page
+Quote Post
mis
post 24.07.2013, 01:02:27
Post #15





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 25.04.2010

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


nie w tym miejscu wstawiałem literala, teraz ok, dzięki za pomoc.
+
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: 20.05.2024 - 00:20