javascript - Return to Ajax - Error - Symfony2 -


for on week can not solve problem ajax . have form customer chooses product buy , amount going buy , , extent ( 1kg, 5kg, etc ) . works properly, when choose product, other 2 fields corresponding quantities , units auto . when sending form, tells me following error:

the controller must return response (null given). did forget add return statement somewhere in controller? 

i'll put code , problem should in driver. reading not difficult , commenting on each step.

1°: first, sending form view. (obviously , first passes through routing, not go if)

tablascontroller.php

public function pedidoaction()     {         $em = $this->getdoctrine()->getmanager();          $prodped= new prodpedido();//creo la entidad de los productos         $form = $this->createform(new prodpedidotype(), $prodped);         $nombres = $em->getrepository('proyectoadminbundle:catalogo')->findbyarticulo();           return $this->render('atajobundle:general:pedido.html.twig', array('form' => $form->createview(), 'nombres' => $nombres));      } 

2°: reduced little code not long . here , present form, , make corresponding javascript handles dynamically add fields , , mentioned above, auto-complete fields. although not go case , since problem in controller.

pedido.html.twig

{% block content %}    <section class="pedido">    <form id="formulario" action="{{ path('crear_pedido', { 'id': app.user.id } ) }}" method="post" {{ form_enctype(form) }}> {{ form_start (form) }} {{ form_errors(form) }}      <div id="agrega">     <ul>         <li>{{ form_label(form.producto, 'nombre del producto: ') }}</li>         <li>{{ form_label(form.cantidad, 'cantidad que va llevar: ') }}</li>         <li>{{ form_label(form.valor, 'valor en numero (kgs/lts): ') }}</li>      </ul>      <ul class="ul_0">         <li>{{ form_widget(form.producto, { 'attr': {'class': 'producto_0'} }) }}</li>         <li>{{ form_widget(form.cantidad, { 'attr': {'class': 'cantidad_0'} }) }}</li>         <li>{{ form_widget(form.valor, { 'attr': {'class': 'medida_0'} }) }}</li>      </ul>      </div>    <div ><input id="agregarcampo" type="button" value="agregar producto"/></div> <div ><input id="quitarcampo" type="button" value="quitar producto"/></div> <div ><input id="enviar" type="submit" id="submit"/></div>  {{ form_end (form) }}   </section> {% endblock %}  {% block javascripts %}     {{ parent() }}     <script type="text/javascript" src=" {{ asset('bundles/micarpeta/js/jquery-2.1.4.min.js') }} "></script>     <script type="text/javascript">     $(document).ready(function() {      var loqueagrego;      var busqueda = $('#busqueda');     var contenedor       = $("#agrega"); //id del contenedor     var addbutton       = $("#agregarcampo"); //id del botón agregar     var quitbutton = $("#quitarcampo");     var productos = '{% nombre in nombres %}<option value="{{ nombre.articulo }}"> {{ nombre.articulo }} </option>{% endfor %}';     var x = 1;      //agregar boton     $(addbutton).click(function (e) {           //el html que voy agregar            loqueagrego = '<ul>';            loqueagrego = loqueagrego + '<li><label>nombre del producto: </label></li>';            loqueagrego = loqueagrego + '<li><label>cantidad que va llevar: </label></li>';            loqueagrego = loqueagrego + '<li><label>valor en numero (kgs/lts): </label></li>';            loqueagrego = loqueagrego + '</ul>';             loqueagrego = loqueagrego + '<ul class="ul_'+x+'">';            loqueagrego = loqueagrego + '<li><select class="producto_0" name="producto[]">'+ productos +'</select></li>';            loqueagrego = loqueagrego + '<li><select class="cantidad_0" name="cantidad[]"></select></li>';            loqueagrego = loqueagrego + '<li><select class="medida_0" name="medida[]"></select></li>';            loqueagrego = loqueagrego + '</ul>';            //lo agrego            $(contenedor).append(loqueagrego);            x++; //sumo la cantidad de campos que hay          return false;     });       //quitar boton     $(quitbutton).click(function (e){        if (x !== 1){ // si es distinto 1, remuevo los input que no deseo        $("#agrega ul:last-child").remove();        $("#agrega ul:last-child").remove();        x--;        }        return false;      });      //le digo que todos los que se agreguen dinamicamente tambien van ser afectados     $('#agrega').on("change",".producto_0", function(e){      var elegido = $(this).val();     var medidahermano = $(this).parent().parent().attr("class");     var cantidadhermano = medidahermano;     medidahermano = $('.'+ medidahermano +' li:last-child');//recupero el ultimo hijo     medidahermano = medidahermano.children(1); //recupero el primer hijo     cantidadhermano = $('.'+ cantidadhermano +' li:nth-child(2)');     cantidadhermano = cantidadhermano.children(1);         var solido;       var liquido;       solido = '<option value="1">1</option>';       solido = solido + '<option value="5">5</option>';       solido = solido + '<option value="10">10</option>';       solido = solido + '<option value="15">15</option>';       solido = solido + '<option value="20">20</option>';       solido = solido + '<option value="30">30</option>';       solido = solido + '<option value="50">50</option>';       solido = solido + '<option value="100">100</option>';       liquido = '<option value="6">6</option>'       liquido = liquido + '<option value="12">12</option>';       liquido = liquido + '<option value="24">24</option>';       liquido = liquido + '<option value="48">48</option>';       liquido = liquido + '<option value="12">96</option>';      $.ajax({                            type: "post",                           url: "{{ path('que_unidad') }}",                           data: { 'id' : ' ' + elegido + ' ' },                           error: function(){                                 alert("error petición ajax");                           },                           success: function(data){                                     alert(data);                                                                                if(data == 'kg' | data == 'unidad'){                                   $(cantidadhermano).html(solido);                                 }                                   else if(data == 'lts'){                                   $(cantidadhermano).html(liquido);                                  }                                     $.ajax({                                           type: "post",                                           url: "{{ path('medidas_y_unidades') }}",                                           data: { 'id' : ' ' + elegido + ' ' },                                           error: function(){                                                 alert("error petición ajax");                                           },                                           success: function(data){                                                                                                      $(medidahermano).html(data);                                            }                                 });                             }    });        });  });      </script>   {% endblock %} 

3°: assumed error. me way return information ajax , not , because seems it's okay . return information through view, works fine , fields auto . sending form , error.

tablascontroller.php

public function recuperarmedidasyunidadesaction(){         $id = $_post['id'];         $em = $this->getdoctrine()->getmanager();          // busco las diferentes unidades que existen (1kg, 5kg, 10kg, etc)         $medidas = $em->getrepository('proyectoadminbundle:unidades')->findbyunidadesjoincatalogo($id);          return $this->render('atajobundle:ajax:medidasyunidades.html.twig', array('medidas' => $medidas));      }      public function recuperarunidadaction(){         $id = $_post['id'];         $em = $this->getdoctrine()->getmanager();          // busco las diferentes unidades que existen (1kg, 5kg, 10kg, etc)         $unidad = $em->getrepository('proyectoadminbundle:categoria')->findbyunidad($id);          return $this->render('atajobundle:ajax:unidad.html.twig', array('unidad' => $unidad));      } 

4°:views

medidasyunidades.html.twig

{% medida in medidas  %}  <option value="{{ medida.medida }}">{{ medida.medida }}</option>  {% endfor %} 

unidad.html.twig

{{ unidad.unidad }} 

a response object requires data in associative array. code gives entity object. have convert entity array.

if convert entity data array use jmsserializer. see other stackoverflow topic


Comments

Popular posts from this blog

c# - Binding a comma separated list to a List<int> in asp.net web api -

Delphi 7 and decode UTF-8 base64 -

html - Is there any way to exclude a single element from the style? (Bootstrap) -