na stackoverflow trochę wyraźniej widac problem chyba.

Chcę wprowadzane w input dane przesłać do kontrolera i wydrukować zawartość na nowej stronie.

Skrypt JS
  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"</script>
  2. <script type='text/javascript'>
  3. function myFunction() {
  4. var data = [];
  5. var elementy = document.getElementsByClassName('inputISBN');
  6.  
  7. for (var i = 0; i < elementy.length; i++){
  8. data[elementy[i].getAttribute('name')] = elementy[i].getAttribute('value');
  9. }
  10.  
  11.  
  12. $.ajax({
  13. url: "{{ path('test') }}",
  14. type: "POST",
  15. data: data ,
  16. {# data: { "tablica" : tablica },#}
  17. success: function()
  18. {
  19. alert("ok");
  20. }
  21. });
  22.  
  23. }


Formularz twig.html
  1. <form action="{{ path('test') }}" method="post">
  2. {% for ksiazka in ksiazki %}
  3. <td>
  4. <input type="number" class="inputISBN" size="2" name="{{ ksiazka.isbn }}"
  5. value="{{ ksiazka.quantity }}" onchange="myFunction()"><br>
  6. </td>
  7. </form>


akcja w kontrolerze, która ma utworzyć zmienną sesji o zawartości pobranej z formularza.
  1. /**
  2.   * test.
  3.   *
  4.   * @Route("/test", name="test")
  5.   * @Template()
  6.   */
  7. public function testAction(Request $request)
  8. {
  9. $data = $request->request->get('data');
  10. $session = $request->getSession();
  11. $session->set('data',$data );
  12. return array();
  13. }


wydruk print_r() zmiennej sesji. Nic nie drukuje.
  1. /**
  2.   * test2.
  3.   *
  4.   * @Route("/test2", name="test2")
  5.   * @Template()
  6.   */
  7. public function test2Action(Request $request)
  8. {
  9. $session = $request->getSession();
  10. $data = $session->get('data');
  11.  
  12. echo '<pre>',print_r($data),'</pre>';
  13.  
  14. return array();
  15. }


Efekt jest taki, że po wprowadzeniu danej do formularza wyskakuje alert "ok", ale strona test2 nic nie drukuje. Jakby JavaScript nic do kontrolera nie przesłał.

---
edit
---

Jeśl bezpośrednio w konsoli przeglądarki odpale skrypt to wyświetla 404 not found (nie znajduje url {{ path('test') }} podanego w skrypcie)
  1. m.ajaxTransport.send @ jquery.min.js:4
  2. m.extend.ajax @ jquery.min.js:4
  3. (anonymous function) @ VM2254:10
  4. InjectedScript._evaluateOn @ VM2240:883
  5. InjectedScript._evaluateAndWrap @ VM2240:816
  6. InjectedScript.evaluate @ VM2240:682