Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jquery/ajax ładowanie widoku ZF2
Forum PHP.pl > Forum > XML, AJAX
bobi194
w jquery 1.4 ( i kohanie 3) poniższy kod działa
  1. $(document).ready(function()
  2. {
  3. //zamiast load()
  4. $.ajax(
  5. {
  6. type:"GET",
  7. url:"<?php echo url::base();?>index.php/tylkoajax/ajax",
  8. async: true,
  9. dataType: "html",
  10. success: function(msg){
  11. $("#odp").html(msg);
  12. }
  13. }
  14.  
  15. );
  16.  
  17.  
  18. $('#wyslij').live("click",function()
  19. {
  20. $.ajax(
  21. {
  22. type:"GET",
  23. url:"<?php echo url::base();?>index.php/tylkoajax/ajax",
  24. async: true,
  25. dataType: "html",
  26. success: function(msg){
  27. $("#odp").html(msg);
  28. }
  29. }
  30.  
  31. );
  32. }
  33. );
  34.  
  35. )};
  36. <div id="msg"></div>


w jquery 1.10 ( i zf2) poniższy kod nie działa
  1. $(document).ready(function(){
  2.  
  3. $.ajax({
  4.  
  5. url: "<?php echo $this->url('auth-doctrine-testy/default', array('controller' => 'index', 'action' => 'loginajax'));?>",
  6. type: "POST",
  7.  
  8. success: function( strData ){
  9. $("#odp").html(strData );
  10.  
  11.  
  12.  
  13. }
  14. }
  15. );
  16.  
  17.  
  18.  
  19. $(document).on("click","#wyslij",
  20. function(){
  21.  
  22. $.ajax(
  23. {
  24.  
  25. url: "<?php echo $this->url('auth-doctrine-testy/default', array('controller' => 'index', 'action' => 'loginajax'));?>",
  26. type: "POST",
  27.  
  28.  
  29. success: function( strData ){
  30. $("#odp").html('strData' );
  31.  
  32. }
  33. }
  34. );
  35.  
  36.  
  37. </script>
  38.  
  39.  
  40. <div id="odp"></div>

problemem nie jet framework php (widzę co zwraca kontroler);
Chodzi o to, że zdarzenie $(document).on("click","#wyslij"..... nie podmienia treści w divie odp

Czy ktoś z was ma rozwiązanie na ładowanie całych widoków w połączeniu jquery i zf2 i może je przedstawić
viking
Nawet jeśli by działało to $("#odp").html('strData' ); uzupełni stringiem 'strData' a nie odpowiedzią z żądania.
Co masz jako odpowiedź?
bobi194
no tak sorki ciapki wstawiłem, żeby zamiast widoku w pentli pokazało mi jakiś przypadkowy string

zastanawiam się na koncepcją ładowania widoków via ajax (jquery) ba tak:
1. odpalam kontroler domyślny np login
2. on renderuje mi widok login.phtml
3. widok ten po załadowaniu (document -redy) wysyła żądanie ajax do kontrolera loginajax
4. w odpowiedzi (success) dostaje zrenderowany widok (bez layoutu czyli setTerminal(true)) loginajax
5. widok umieszczam w divie odp (i mam widok z formularzem logowania)

do tego momentu wszystko działa, ale gdy:
kliknę przycisk z id=wyslij żądanie ajax do kontrolera ajaxlogin dostaję w odpowiedzi do id=odp drugi formularz , a po każdym kliknięci następny

coś jest zapętlone
jak wy to macie rozwiązane?

nospor
Cytat
kliknę przycisk z id=wyslij żądanie ajax do kontrolera ajaxlogin dostaję w odpowiedzi do id=odp drugi formularz , a po każdym kliknięci następny
A co bys chcial dostac jak nie formularz?
bobi194
tak formularz ale dlaczego nie "nadpisuje" poprzednio utworzonego diva id=odp tylko tworzy następny

Efekt jest taki, że wyrenderowany formularz przekazywałem do okienka dialog jquery
I tak jak już pisałem: po kliknięciu elementu o id=wyslij tworzą się kolejne formularze w dialogu
poniżej jeszcze raz kompletny kod login.phtml
  1. $(document).ready(function(){
  2.  
  3. $.ajax(
  4.  
  5. {
  6. url: "<?php echo $this->url('auth-doctrine-testy/default', array('controller' => 'index', 'action' => 'loginajax'));?>",
  7.  
  8. type: "POST",
  9.  
  10. error: function(){
  11.  
  12. },
  13.  
  14. beforeSend: function(){
  15.  
  16. },
  17.  
  18. complete: function(){
  19.  
  20. },
  21.  
  22. success: function( strData ){
  23. $("#odp").html(strData );
  24.  
  25. $( "#dialog" ).dialog({
  26. dialogClass: 'no-close',
  27. autoOpen: true,
  28. minWidth: '800',
  29. show: {
  30. effect: "blind",
  31. duration: 1000
  32. },
  33. hide: {
  34. effect: "explode",
  35. duration: 1000
  36. }
  37. });
  38.  
  39. }
  40. }
  41. );
  42.  
  43.  
  44.  
  45.  
  46.  
  47. $(document).on("click","#wyslij",
  48.  
  49. function(){
  50.  
  51.  
  52. $.ajax(
  53. {
  54.  
  55. url: "<?php echo $this->url('auth-doctrine-testy/default', array('controller' => 'index', 'action' => 'loginajax'));?>",
  56.  
  57. type: "POST",
  58.  
  59.  
  60. success: function( strData ){
  61. $("#odp").html(strData);
  62. $( "#dialog" ).dialog({
  63. dialogClass: 'no-close',
  64. autoOpen: true,
  65. minWidth: '800',
  66. show: {
  67. effect: "blind",
  68. duration: 1000
  69. },
  70. hide: {
  71. effect: "explode",
  72. duration: 1000
  73. }
  74. });
  75.  
  76. }
  77. }
  78. );
  79.  
  80.  
  81.  
  82.  
  83. });
  84.  
  85. });
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92. </script>
  93.  
  94.  
  95. <div id="odp"></div>


pomocy co jest nie tak?
nospor
Cos mieszasz z tymi dialogami.
#dialog dostajesz w odpowiedzi ajaxem? Wydaje mi sie, ze powinienies czyscic wpierw aktalny, dopiero potem na nowo tworzyc kolejny.
bobi194
rzeczywiście jak zakomentowałem kod js gdzie wywoływany był dialog wszystko śmiga tzn na stronie jest widok(formularz) a po kliknięciu "id=wyslij" nie tworzy się kolejny formularz

W takim razie jak poprawić te okienko dialogowe?






znalazłem rozwiązanie - wystarczyło id=odp umieścić w divie dlalogu a nie na odwrót
Dzięki za posty

Mam jeszcze pytanie czy ktoś w was korzysta w podobny sposób z ajaxa do ładowania całych widoków czy raczej ograniczacie żądania do pozyskania samych danych np: w formacie JSON ?
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.