Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Jak wywołać formularz ajaxem
Forum PHP.pl > Forum > PHP > Frameworki
amii
Potrzebuje żeby po kliknięciu w selekta zamieniał mi się dynamicznie formularz. Na razie nic mi nie działa tzn. nie wyświetlają się żadne alerty nawet.
Formularz znajduje się w akcji: trainings/addexercise

Mój kod wygląda tak:

  1. //kontroler trainingsController.php
  2. public function init()
  3. {
  4. $ajaxContext = $this->_helper->getHelper('AjaxContext');
  5. $ajaxContext->addActionContext('ajax-check', 'html')
  6. ->initContext();
  7.  
  8. $this->view->headScript()->prependScript(
  9. "ajaxUrl='" . $this->view->url(array(
  10. 'module' => 'default',
  11. 'controller' => 'trainings',
  12. 'action' => 'ajax-check',
  13. 'format' => 'html'), 'default', 'false') . "'"
  14. );
  15. }
  16.  
  17.  
  18.  
  19. public function ajaxCheckAction() {
  20.  
  21. //zwracamy z formularza wartosc pola select
  22. $switcher = $this->_request->getParam('type');
  23. if (!$switcher) {
  24. $this->view->json = My_Util::validatorMessages($f->getMessages());
  25. }
  26. switch ($switcher) {
  27.  
  28. case 1:
  29. $this->view->json ='aaaa';
  30. break;
  31. case 2:
  32. $this->view->json ='bbbb';
  33. break;
  34. case 3:
  35. $this->view->json ='cccc';
  36. break;
  37. case 4:
  38. $this->view->json ='dddd';
  39. break;
  40. default:
  41. $this->view->json ='eeee';
  42. }
  43. }
  44.  
  45.  
  46. //widok ajax-check.ajax.phtml
  47. echo $this->json
  48.  
  49. //formularz fragment z przycisku do którego jest doczepiane zdarzenie onchange
  50.  
  51. $select = new Zend_Form_Element_Select('type', array(
  52. 'label' => 'Wybierz typ ćwiczenia',
  53. 'multiOptions' => array(
  54. 1 => 'Dodanie pliku ćwiczeniowego',
  55. 2 => 'Dodanie pliku prezentacji Power Point widocznego bezpośrednio ze strony',
  56. 3 => 'Dodanie filmiku widocznego bezpośrednio ze strony',
  57. 4 => 'Dodanie formularza zapytań',
  58. ),
  59. 'validators' => array(
  60. array('NotEmpty', true)
  61. )
  62. ));


JS ladowany globalnie
[JAVASCRIPT] pobierz, plaintext
  1. function ajaxSuccess(data){
  2. alert(data);
  3. }
  4.  
  5.  
  6. function ajax_check() {
  7. $.ajax({
  8. type: 'POST',
  9. url: ajaxUrl,
  10. data: this.name + '=' + this.value,
  11. success: ajaxSuccess,
  12. context: this
  13. });
  14. }
  15.  
  16. //Simple event handler for jQuery
  17. $(document).ready(
  18. function bind() {
  19. $('legend a.clicker').click(toggle_div);
  20. $('select #type').change(ajax_check);
  21. }
  22. );
[JAVASCRIPT] pobierz, plaintext


Jak wywołuje: http://localhost/learning/public/trainings/ajax-check/format/html to dostaje info, że

Exception information:

Message: script 'trainings/ajax-check.phtml' not found in path (C:/wamp/www/learning/application/views\scripts/)

CuteOne
Nie wyłączyłeś renderowania layoutu i templatki .phtml

wstaw to na początek akcji ajaxCheckAction
  1. $this->_helper->layout()->disableLayout();
  2. $this->_helper->viewRenderer->setNoRender(true);
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.