Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie danych dopiero za drugim razem.
miati
post 15.07.2014, 12:32:28
Post #1





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

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


Witam.
Mam problem z działaniem pewnego skryptu ajaxa.
Demo: magorm.cba.pl - admin/admin.

Aby sprawdzić co jest nie tak należy:
wejść na magorm.cba.pl/?x=mapa, a następnie kliknąc strzałkę w górę. (nie stanie się nic), a potem jeszcze raz strzałkę w górę (tym razem postać się poruszy).
Problem polega na tym, że zawsze po pierwszym załadowaniu strony i kliknięciu tej nieszczęsnej strzałki zmienna js się nie aktualizuje (ajax nie wyrzuca błędu, więc wszystko chyba pobiera). Za każdym kolejnym razem wszystko już działa okej i zmienia się dynamicznie.

Kody:

  1. <?php
  2.  
  3. $host_bazy_danych = ',,,';
  4. $uzytkownik_bazy_danych = ',,,';
  5. $haslo_bazy_danych = ',,,,';
  6. $nazwa_bazy_danych = ',,,';
  7.  
  8. $polacz = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych) or die('socket error');
  9. mysql_select_db($nazwa_bazy_danych,$polacz) or die('socket error - no db');
  10. mysql_query("SET NAMES 'utf8'");
  11.  
  12.  
  13. function gracz($sesja){
  14. if(!empty($sesja) && is_numeric($sesja)){
  15. $gracz = mysql_fetch_array(mysql_query("select *, (select count(*) from gracze g where g.exp > exp) as pozycja from gracze where gracz = ".$sesja));
  16. }
  17.  
  18. if(!empty($gracz))
  19. mysql_query("update gracze set online = ".time()." where gracz = ".$sesja);
  20.  
  21. return $gracz ;
  22. }
  23. $oGracz = gracz($_SESSION['gracz']);
  24.  
  25.  
  26.  
  27. if ($oGracz['y'] <= 8){
  28. $ruszaj_graczem = "#anim";
  29. $gdzie = "-";
  30.  
  31. }
  32. else{
  33. $gdzie = "+";
  34. $ruszaj_graczem = "#map";
  35.  
  36. }
  37.  
  38. if ($oGracz['y'] <=7){
  39.  
  40. $ruszaj_graczem2 = "#anim";
  41. $gdzie2 = "+";
  42. }
  43. else{
  44. $ruszaj_graczem2 = "#map";
  45. $gdzie2 = "-";
  46. }
  47.  
  48. $tablica = array();
  49. $tablica['wynik2'] = $gdzie;
  50. $tablica['wynik'] = $ruszaj_graczem;
  51. $tablica['wynik3'] = $ruszaj_graczem2;
  52. $tablica['wynik4'] = $gdzie2;
  53.  
  54. echo json_encode($tablica);
  55.  
  56.  
  57. ?>




I JS:

  1. <script>
  2. ;(function($){ var settings = {}; var element = {}; var currFrame = 0; var tm = null; $.fn.gracz = function(sett){ element = $(this); settings = $.extend({}, $.fn.gracz.defaults, sett); function _build(){ element.width(settings.frameWidth); element.height(settings.frameHeight); element.css('background-position', '0 0'); };
  3. _build();
  4. }; $.fn.gracz.pause = function(){ if(tm){ clearTimeout(tm); } tm = null; }
  5. $.fn.gracz.stop = function(){ if(tm){ clearTimeout(tm); } tm = null; currFrame = 0; element.css('background-position', '0 0'); }
  6. $.fn.gracz.pause = function(){ clearTimeout( tm ); tm = null; }
  7. $.fn.gracz.play = function(){ if(settings.totalFrames <= 0 || !element || !element.length){ return; }
  8.  
  9. function _animate(){
  10. var tmFn = function(){ _animate(); }; var bgPos = element.css('background-position'); var ie = true;
  11. if(bgPos == 'undefined' || bgPos == null){ bgPos = parseInt(element.css('background-position-y'));
  12. } else { bgPos = bgPos.split(' '); bgPos = parseInt(bgPos[1]); ie = false; }
  13. bgPos -= settings.frameHeight - 1;
  14. if(ie){ element.css('background-position-y', bgPos + 'px'); }
  15. else { element.css('background-position', ('0px ' + bgPos + 'px')); }
  16. currFrame++; if(currFrame > (settings.totalFrames - 1)){ currFrame = 0; element.css('background-position', '0 0');
  17. if(!settings.loop){ return; } } tm = setTimeout(tmFn, settings.speed); }
  18. if(tm){ element.gracz.stop(); } _animate(); }
  19. $.fn.gracz.defaults = { frameWidth: 32, frameHeight: 32, speed: 60, totalFrames: 0, loop: false };
  20. })(jQuery);
  21.  
  22.  
  23.  
  24.  
  25. function go(where,mapID) {
  26. var req = mint.Request();
  27. req.OnSuccess = function () {
  28. text = this.responseText;
  29. if(text.substring(0,2) == 'ok') {
  30. switch(where){
  31. case 1: go_left(); break;
  32. case 2: go_right(); break;
  33. case 3: go_up(); break;
  34. case 4: go_down(); break;
  35. }
  36. var gg = document.getElementById('box');
  37. if(text.substring(0,5) == 'oknpc') {
  38. who = text.substring(5,7);
  39. gg.innerHTML = "<a href='?x=npc'>odwiedź npc!</a>";
  40. gg.style.display = "block";
  41. }
  42.  
  43. else {
  44. if(text.substring(0,8) == 'okpotwor') {
  45. who = text.substring(9,10);
  46. gg.innerHTML = "<a href='?x=walka'>walcz z potworem!!</a>";
  47. gg.style.display = "block";
  48. }
  49. else{
  50. if(text.substring(0,12) == 'okrosliny') {
  51. gg.innerHTML = "<a href='?x=plecak'>Podnieś</a>";
  52. gg.style.display = "block";
  53. }
  54.  
  55.  
  56. else {
  57. if(text.substring(0,10) == 'okteleport') {
  58. who = text.substring(11,12);
  59. document.location.href= "?x=portal";
  60. gg.style.display = "block";
  61. } else {
  62. if(text.substring(0,11) == 'okprzedmiot') {
  63. gg.innerHTML = "<a href='?x=plecak'>zobacz co tu leży</a>";
  64. gg.style.display = "block";
  65. } else {
  66. if(text.substring(0,10) == 'okskrzynia') {
  67. document.location.href= "?x=skrzynia";
  68. gg.style.display = "block";
  69. } else {
  70. gg.style.display = "none";
  71. }
  72. }
  73. }
  74. }
  75.  
  76. }
  77. }
  78.  
  79.  
  80. }
  81. },
  82. req.OnError = function () { }
  83.  
  84. req.Send ("ajax_map.php?where="+where+"&map="+mapID);
  85. }
  86.  
  87.  
  88.  
  89. function players() {
  90. var req = mint.Request();
  91. req.OnSuccess = function () {
  92. text = this.responseText;
  93. var gg = document.getElementById('box_players');
  94. if(gg) { gg.innerHTML = text; }
  95. },
  96. req.OnError = function () { }
  97.  
  98. req.Send ("players.php");
  99. }
  100. var get_players=setInterval(players, 1500);
  101.  
  102.  
  103.  
  104. function go_left(){
  105. $('#anim').css('background',lQwedg);
  106. $('#map').animate({"left": "+=32px"},'slow');
  107. $('#anim').gracz.play();
  108. return false;
  109. }
  110.  
  111.  
  112. function go_right(){
  113. $('#anim').css('background',rdkEvp);
  114. $('#map').animate({"left": "-=32px"},'slow');
  115. $('#anim').gracz.play();
  116. return false;
  117. }
  118.  
  119. function go_up(){
  120. $.ajax(
  121. {
  122. type: "POST",
  123. url: "www/map/czat1.php",
  124. dataType: 'json',
  125. success: function(result){
  126. ruszaj = result['wynik'];
  127. gdzie = result['wynik2'];
  128. },
  129. error: function(error){
  130. alert("wystąpił błąd");
  131. }
  132. });
  133. $('#anim').css('background',ugioEf);
  134. $(ruszaj).animate({"top": (gdzie + "=32px")},'slow');
  135. $('#anim').gracz.play();
  136. return false;
  137. }
  138.  
  139. function go_down(){
  140. $.ajax(
  141. {
  142. type: "POST",
  143. url: "www/map/czat1.php",
  144. dataType: 'json',
  145. success: function(result){
  146. ruszaj2 = result['wynik3'];
  147. gdzie2 = result['wynik4'];
  148. },
  149. error: function(error){
  150. alert("wystąpił błąd");
  151. }
  152. });
  153. $('#anim').css('background',dwQjfn);
  154. $(ruszaj2).animate({"top": (gdzie2 + "=32px")},'slow');
  155. $('#anim').gracz.play();
  156. return false;
  157. }
  158.  
  159. function handleArrowKeys(evt) {
  160. evt = (evt) ? evt : ((window.event) ? event : null);
  161. if (evt) {
  162. switch (evt.keyCode) {
  163. case 37:
  164. go(1,mapID);
  165.  
  166. break;
  167. case 39:
  168. go(2,mapID);
  169.  
  170. break;
  171. case 38:
  172. go(3,mapID);
  173.  
  174. break;
  175. case 40:
  176. go(4,mapID);
  177.  
  178. break;
  179. }
  180. }
  181. }
  182.  
  183.  
  184. document.onkeydown = handleArrowKeys;
  185.  
  186.  
  187. $(document).ready(function(){
  188. $('#anim').gracz({ frameWidth: 33 , frameHeight: 33, speed: 140, totalFrames: 3 });
  189.  
  190.  
  191.  
  192. $('#startLeft').click(function(){
  193. go(1,mapID);
  194. });
  195.  
  196. $('#startRight').click(function(){
  197. go(2,mapID);
  198. });
  199.  
  200. $('#startUp').click(function(){
  201. go(3,mapID);
  202. });
  203.  
  204. $('#startDown').click(function(){
  205. go(4,mapID);
  206. });
  207.  
  208. });
  209.  
  210.  
  211.  
  212. </script>


Kod php aktualizuje pozycję gracza (bo jeśli po pierwszym wejściu klikniemy strzałkę w górę to postać zmieni pozycję, ale nie poruszy się - nie będzie animacji).

Pozdrawiam.
Go to the top of the page
+Quote Post
nospor
post 15.07.2014, 12:44:31
Post #2





Grupa: Moderatorzy
Postów: 36 468
Pomógł: 6300
Dołączył: 27.12.2004




1) Link co podales ciągle sie zapetla i nie idzie go odpalic
2) Co do kodu:
ajax wykonuje sie ASYNCHRONICZNIE, oznacza to, ze wykonuje sie on jakis czas, a kod co jest pod spodem idzie sobie dalej nie czekajac na niego.

Tak wiec o to:
$('#anim').css('background',ugioEf);
$(ruszaj).animate({"top": (gdzie + "=32px")},'slow');
$('#anim').gracz.play();

Ma nie byc poza ajaxem, gdyz wykona sie szybciej niz ajax zwroci wynik. Ten kod ma byc w SUCCESS ajaxa a nie poza nim. Dzieki temu wykonu się faktycznie wtedy, gdy ajax sie zakonczy i bedziesz mial wynik


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

"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
miati
post 15.07.2014, 13:04:24
Post #3





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

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


http://magorm.cba.pl/?x=mapa

u mnie działa.
w successie działa tak samo. wykonuje się za drugim i każdym kolejnym razem - ale nie za pierwszym.

EDIT: Przepraszam serdecznie. Jednak działa. No nic, człowiek uczy się całe życie.
Dziękuję i pozdrawiam.

Ten post edytował miati 15.07.2014, 13:06:37
Go to the top of the page
+Quote Post
nospor
post 15.07.2014, 13:06:12
Post #4





Grupa: Moderatorzy
Postów: 36 468
Pomógł: 6300
Dołączył: 27.12.2004




U mnie niestety ciagle sie zapetla.... Czy ty przypadkiem nie masz tam logowania i Tobie dziala bo jestes zalogowany a mi nie dziala bo nie jestem zalogowany??


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

"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

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: 23.05.2024 - 21:45