在Symfony2中使用Ajax/Jquery返回表单视图


Returning form view in Symfony2 using Ajax/Jquery

当前从下拉菜单发布数据。我试图基本上是返回的形式,然后插入到页面。

<标题>选择下拉h1> Jquery Ajax/h1> 制器h1> 回此数据,表示表单有效。
return array(
    'form' => $form->createView(),
);

获得500内部服务器错误。我只想把这个表单呈现在当前页面上,不刷新

我邀请你使用FOSJsRoutingBundle,

看看我的jQuery Ajax调用的例子:

$('#addNewVariant').on('click', function(event){
                var hidden_input = $('#hidden_input').val();
                hidden_input++;
                $.ajax({
                    type: "get",
                    dataType: 'json',
                    url: Routing.generate('admin_products_addNewVariant', {'number' : hidden_input }),
                    beforeSend: function(){
                        $('.loadingGif').show();
                        $('#loadingModal').modal('show');
                    },
                    success: function( returnedData ) {
                        $('#hidden_input').attr( 'value', hidden_input );
                        $('#ajaxVariantAdded').append('<li class="dd-item" data-id="'+returnedData.id+'"><div class="dd-handle"><a data-id="'+returnedData.id+'"><i class="fa fa-hand-o-right"></i> {{"tab.variant"|trans}} '+returnedData.name+'</a><a data-id="'+returnedData.id+'" data-toggle="modal" class="pull-right" href="#modal'+returnedData.id+'"><i class="glyphicon glyphicon-minus-sign"></i></a></div></li>');
                        $( '.ajax' ).append( returnedData.form );
                        $('.variant').hide();
                        $('.variantItem'+returnedData.id).show();
                        $('.loadingGif').hide();
                        $('#loadingModal').modal('hide');
                    },
                    error: function( returnedData){
                        $('.loadingGif').hide();
                        $('#loadingModal').modal('hide');
                    }
                });
            });

这是我的路线:

admin_products_addNewVariant:
    pattern:  /addVariation/{number}
    defaults: { _controller: "ProductsBundle:BackEnd/Products:addNewVariant" }
    options:
        expose: true

最后这是我的功能:

public function addNewVariantAction($number){
        $entity = new Variant();
        $form = $this->createForm(new VariantType($number), $entity)->createView();
        $response = new JsonResponse(array(
                'form' => $this->renderView('ProductsBundle:Administration:Products/NewFormVariant/new.html.twig',array(
                        'form'          => $form,
                        'number'        => $number,
                    )
                ),
                'name'      => $number+1,
                'id'        => $number,
            ));
        return $response;
    }

希望我的回答对大家有所帮助。