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
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"</script> <script type='text/javascript'> function myFunction() {
var data = [];
var elementy = document.getElementsByClassName('inputISBN');
for (var i = 0; i < elementy.length; i++){
data[elementy[i].getAttribute('name')] = elementy[i].getAttribute('value');
}
$.ajax({
url: "{{ path('test') }}",
type: "POST",
data: data ,
{# data: { "tablica" : tablica },#}
success: function()
{
alert("ok");
}
});
}
Formularz twig.html
<form action="{{ path('test') }}" method="post"> {% for ksiazka in ksiazki %}
<input type="number" class="inputISBN" size="2" name="{{ ksiazka.isbn }}" value="{{ ksiazka.quantity }}" onchange="myFunction()"><br>
akcja w kontrolerze, która ma utworzyć zmienną sesji o zawartości pobranej z formularza.
/**
* test.
*
* @Route("/test", name="test")
* @Template()
*/
public function testAction(Request $request)
{
$data = $request->request->get('data');
$session = $request->getSession();
$session->set('data',$data );
}
wydruk print_r() zmiennej sesji.
Nic nie drukuje./**
* test2.
*
* @Route("/test2", name="test2")
* @Template()
*/
public function test2Action(Request $request)
{
$session = $request->getSession();
$data = $session->get('data');
}
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)
m.ajaxTransport.send @ jquery.min.js:4
m.extend.ajax @ jquery.min.js:4
(anonymous function) @ VM2254:10
InjectedScript._evaluateOn @ VM2240:883
InjectedScript._evaluateAndWrap @ VM2240:816
InjectedScript.evaluate @ VM2240:682
Ten post edytował twojastara 26.04.2015, 21:27:11