Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS][AJAX]Brak aktualizacji zmiennych.
miati
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Witam.
Posiadam problem z dynamicznym aktualizowaniem zmiennych w pliku JS.

Posiadam 2 pliki.
W pierwszym na podstawie danych pobranych z bazy dynamicznie aktualizowana jest zmienna var = coś.
(zmienna ta jest aktualizowana z każdym case'm w js - może to pomoże przy rozwiązaniu problemu.)

Następnie jest plik js, który tę zmienną wykorzystuje.

Problem w tym, że aktualizowanie zmiennej działa okej, natomiast zmienna w pliku js 'nie odświeża się' z każdym wykonanym case'm, tylko dopiero po odświeżeniu strony.

Myślałem nad tym, żebym w case dodać jakiś skrypt, który odświeżyłby tę zmienną, czy od nowa ją pobrał, ale nie wiem jak.

Pozdrawiam.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 25)
nospor
post
Post #2





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




Forum wrozbiarskie pietro wyzej.

ps: jesli jednak nie chce ci sie isc pietro wyzej, to moze bys tak laskawie podal kod?
Go to the top of the page
+Quote Post
miati
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Nie krzycz (IMG:style_emoticons/default/biggrin.gif) już podaję (IMG:style_emoticons/default/smile.gif)

Kod php:

  1. <div id='ojj'>
  2.  
  3. <?php
  4. if ($uder['y'] <= 8){
  5. $porusz = "'#anim'";
  6. }
  7. else{
  8. $porusz = "'#map'";
  9. }
  10.  
  11. ?>
  12. <script>
  13. var qwerty = <?php echo ' '.$porusz.' '; ?>;
  14. </script>
  15. </div>


Kod JS :

  1. function go_up(){
  2. $('#anim').css('background',ugioEf);
  3. $(qwerty).animate({"top": "+=32px"},'slow');
  4. $('#anim').gracz.play();
  5. return false;
  6. }


I dalej ten case odpowiedzialny m.in za odświeżanie diva ojj.

  1. function handleArrowKeys(evt) {
  2. evt = (evt) ? evt : ((window.event) ? event : null);
  3. if (evt) {
  4. switch (evt.keyCode) {
  5. case 37:
  6. go(1,mapID);
  7. odswiezajj();
  8. break;
  9. case 39:
  10. go(2,mapID);
  11. odswiezajj();
  12. break;
  13. case 38:
  14. go(3,mapID);
  15. odswiezajj();
  16. break;
  17. case 40:
  18. go(4,mapID);
  19. odswiezajj();
  20. break;
  21. }
  22. }
  23. }



Funkcji odświeżającej nie podaję, ponieważ nic nie wnosi. Odświeżanie zmiennej w php i przypisanie jej do var qwerty działa.

Ten post edytował miati 9.07.2014, 07:40:12
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




No a plik php to niby kiedy jest wykonywany?
NO i podaj te funkcje odswiezajacą, bo to ze tobie sie wydaje ze nic nie wnosi, to wcale nie musi tak byc. Wkoncu to ty masz banalny problem wiec twoja ocena sytuacji niekoniecznie musi byc dobra (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
miati
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


To jest header, więc wykonywany jest przed załadowaniem pliku js.

Funkcja odświeżająca. Przebudowana, ponieważ domyślnie odświeżała co x sekund. Teraz jest wywoływana w każdym case. W każdym razie ta część działa.


  1. var object = false;
  2. if (window.XMLHttpRequest) object = new XMLHttpRequest();
  3. else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");
  4. function getData(dataSource, divID)
  5. {
  6.  
  7. if (object.readyState==4 || object.readyState==0)
  8. {
  9.  
  10. var obj = document.getElementById(divID);
  11.  
  12.  
  13. object.open("GET", dataSource);
  14.  
  15.  
  16. object.onreadystatechange = function()
  17. {
  18.  
  19. if (object.readyState == 4 && object.status == 200)
  20. obj.innerHTML= object.responseText;
  21. }
  22.  
  23. object.send(null);
  24. }
  25. }
  26.  
  27.  
  28. function odswiezajj()
  29. {
  30. getData('odswiez.php','ojj');
  31. setTimeout("odswiezaj()", 1000);
  32. }




Plik odswiez.php generuje sobie po prostu 1. Nie pisz nic o tym kodzie do odświeżania, bo wszystko wiem. Szkoda patrzeć, zwłaszcza to przypisanie zmiennej 1, ale na początek miało działać. A całość niestety nie chce.

  1. $numer =srand (1,1);
  2. echo $numer;


Ten post edytował miati 9.07.2014, 07:48:07
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Jesli to jest plik odswiez.php
srand(time());
$numer =srand (1,1);
echo $numer;
to niby z jakiej racji ma ci dzialac? Przeciez ty tutaj nigdzie nie generujesz na nowo zmiennej js...
Go to the top of the page
+Quote Post
miati
post
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Nie wiem co masz na myśli. To DZIAŁA. Sprawdzam wszystko w źródle strony i zmienna, wierz lub nie, się zmienia w pliku php, jednak ani rusz w pliku js.


Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Po raz kolejny pisze ci, że ten kod:
srand(time());
$numer =srand (1,1);
echo $numer;

nie ma zadnego związku ze zmianą zmiennej js. Jesli Twoja zmienna js to 'qwerty', to tym kodem php, co tu 3 linijki przed chwilą pokazałem, w zaden sposob jej nie zmieniasz. Tym kodem generujesz losową liczbę. Jaki to ma niby związek ze zmienną js? Zaden
Go to the top of the page
+Quote Post
miati
post
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Ten kod generuję liczbę 1, która jest następnie przypisana do pliku js, który podałem wcześniej.
Tamten plik natomiast ODŚWIEŻA diva 'ojj', który odświeża natomiast moją zmienną js.
Kod nie jest mój, więc całą jego interpretację pozostawiam Tobie.

Zmienna js jest aktualizowana w pliku .php, który jest wczytywany przed plikiem js, w którym zmienna już aktualizuje się dopiero pod odświeżeniu strony.
Ale to poplątane.
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




Kod co tu podales, nadpisuje zawartosc diva ojj losowo wygenerowaną liczbą - i tyle. W zaden sposob kod ten, nie zmienia zmiennej js qwerty. Interpretacje zostawiam Tobie (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
miati
post
Post #11





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


CO? Poplątałeś się kolego. Już tłumaczę (IMG:style_emoticons/default/smile.gif)
Kog generuje 1, która następnie jest wpisana do tego kodu:

  1. <script language=javascript>
  2.  
  3. var object = false;
  4. if (window.XMLHttpRequest) object = new XMLHttpRequest();
  5. else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");
  6. function getData(dataSource, divID)
  7. {
  8.  
  9. if (object.readyState==4 || object.readyState==0)
  10. {
  11.  
  12. var obj = document.getElementById(divID);
  13.  
  14.  
  15. object.open("GET", dataSource);
  16.  
  17.  
  18. object.onreadystatechange = function()
  19. {
  20.  
  21. if (object.readyState == 4 && object.status == 200)
  22. obj.innerHTML= object.responseText;
  23. }
  24.  
  25. object.send(null);
  26. }
  27. }
  28.  
  29. function odswiezajj()
  30. {
  31. getData('odzwiez.php','ojj');
  32. setTimeout("odswiezajj()", 1000);
  33. }
  34.  
  35. </script>


Ooo, tutaj:

  1. function odswiezajj()
  2. {
  3. getData('odswiez.php','ojj');
  4. setTimeout("odswiezajj()", 1000);
  5. }


Nie będę robił z siebie specjalisty od tych spraw, ale to działa. Więc problem nie leży tutaj. Nic nie jest nadpisywane jedynką. Zapewniam Cię, że zmienna qwerty w pliku .php ZMIENIA się (patrząc w źródło strony). żeby jednak zmieniła się w pliku js - muszę odświeżyć stronę ;/

Ten post edytował miati 9.07.2014, 08:12:57
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




Co widze, to mowie.

Tym kodem:
obj.innerHTML= object.responseText;
do diva OJJJ przypisujesz wynik odpowiedzi skryptu php. Jesli Twoj kod php, generuje 1, wiec tym kodem do DIV OJJ wpisujesz zawsze 1. I ta jedynka ma sie nijak do jakiejs tam twojej zmiennej js.Tyle w temacie.
Go to the top of the page
+Quote Post
miati
post
Post #13





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Dobrze. Wychodzi na to, że w magiczny, rodem z Harrego Pottera, sposób zmienna jednak się aktualizuje.
Nie wiem jak, nie wiem gdzie, ale aktualizuje się!
Problem w tym, że zmienna nie przechodzi do pliku js.

Ale. Jeśli twierdzisz, że to wina tego (ja się nie znam), to czy mógłbyś podać jakiś kod, który na wywołanie
funkcja(); - odświeży owego diva 'ojj' ?

Byłbym wdzięczny (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




A w jaki sposob stwierdzasz, ze zmienna ta sie aktualizuje? Pewnie tu jest problem Twojego pogubienia sie (IMG:style_emoticons/default/wink.gif)

Jak chcesz by Twoja zmienna sie aktualizowala, to poprostu generuj te zmienną w kodzie php. Zamiast durnej jedynki, ktora kurcze nic nie robi, generuj swoją zmienną:
<?php
echo '<script type="text/javascript">
qwerty = "nowawartosc";
alert(qwerty);// a tu alert, by sprawdzac czy dziala
</script>';
?>
Go to the top of the page
+Quote Post
miati
post
Post #15





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


A widzisz. Wychodzi na to, że zmienia w źródle: var qwerty = **, ale tak naprawdę nie aktualizuje zmiennej. Ja już się naprawdę pogubiłem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #16





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




1) Ja sie pytam jak ty wczesniej sprawdzales tę rzekomą aktualizację
2) Miało byc bez VAR
3) Alerta dales?
4) I jak teraz sprawdzasz czy sie zakutalizowala? Bo zrodlo strony nie powinno ci tego wykazac, chyba ze korzystasz np. z Firebugu lub sprawdzasz "wygenerowane zrodlo strony"
Go to the top of the page
+Quote Post
miati
post
Post #17





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Jak sprawdzałem? No przez źródło strony. Było tam var qwerty = coś. Nie pytaj (IMG:style_emoticons/default/smile.gif)
Teraz dałem wszystko tak jak napisałeś i alert działa tylko przy odświeżeniu strony tj. nie aktualizuje zmiennej tak jak powinno ;/
Kombinuję cały czas coś z google, ale słabo idzie. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Turson
post
Post #18





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


var qwerty = coś czy var qwerty = 'cos' (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #19





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




Masz to gdzies wystawione online? Bo w ten sposob nie dojdziemy w zyciu do porozumienia, bo caly czas podajesz sprzeczne informacje. Tak sie nie da pracowac (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
miati
post
Post #20





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Niestety nigdzie nie mam. Jakich informacji potrzebujesz (IMG:style_emoticons/default/wink.gif) ?
Twój sposób działa, ale alert wyrzuci tylko gdy odświeżę stronę. Chyba, że dałbym kod w inne miejsce.
qwerty = coś to był przykład (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #21





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




Cytat
Jakich informacji potrzebujesz
No wlasnie juz zadnych. Sorki, ale to co piszesz nie trzyma sie kupy. Alert powinien wyskoczyc przy ajax. Znaczy ze albo ty tego ajaxa nie wykonujesz ani razu albo w ogole wszystko mieszasz. Sorki, ale tak nie da sie Tobie pomoc. Albo to wystaw gdzies online, albo czekaj na kogos, kto bedzie sie totalnie nudzil i probowal dojsc co tam namieszales. Ja nie mam czasu na takie zabawy (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
miati
post
Post #22





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Spróbuję to jakoś ogarnąć.. Dzięki za pomoc (IMG:style_emoticons/default/wink.gif)

Widzisz drogi nosporze, uczę się (IMG:style_emoticons/default/smile.gif)

Jeśli umieszczę kod w taki sposób:
  1. function go_left(){
  2. <?php
  3. if ($uder['y'] <= 8){
  4. $porusz = "'#anim'";
  5. }
  6. else{
  7. $porusz = "'#map'";
  8. }
  9. ?>
  10. qwerty = <?php echo $porusz; ?> ;
  11. alert(qwerty);
  12. $('#anim').css('background',lQwedg);
  13. $(qwerty).animate({"left": "+=32px"},'slow');
  14. $('#anim').gracz.play();
  15. return false;
  16. }


To alert wyświetla się teraz bez odświeżania strony.
Problem w tym, że qwerty nadal nie przyjmuje nowej wartości bez odświeżenia strony.
Jeszcze kilka h i do tego dojdę.
Byłbym wdzięczny jakby ktoś był w stanie jakoś pomóc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Turson
post
Post #23





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Przyjmuje nową wartośc dopiero po odświeżeniu, bo wtedy PHP ponownie analizuje kod i ustala co $porusz zawiera. Żeby to było bez odświeżania to ajax
Go to the top of the page
+Quote Post
miati
post
Post #24





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


Jakaś wskazówka czego dokładnie szukać?
Go to the top of the page
+Quote Post
Turson
post
Post #25





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Skąd bierzesz $uder['y']? Jeżeli ma to być dynamicznie zmieniane, to musisz zrobić akcję ajaxa po jakimś evencie
Go to the top of the page
+Quote Post
miati
post
Post #26





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.07.2014

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


zmienna $uder jest zdefiniowana w innym pliku. Potrzebowałbym czegoś co np. w tym:

  1. switch (evt.keyCode) {
  2. case 37:
  3. go(1,mapID);
  4. break;


Wykona jeszcze właśnie odświeżenie ajaxem danych $uder. Czyli z każdym kliknięciem klawisza z numerem 37 (bodajże strzałka w lewo) odświeży także zmienną.
Dobrze kombinuję?
Pytanie tylko jaki kod zastosować (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 14:53