2015-09-25 60 views
0

當前正在從下拉菜單中發佈數據。我試圖基本上返回的形式,然後將其插入到頁面中。使用Ajax/Jquery返回Symfony2中的表單視圖

選擇下拉

<form method="POST" style="display: inline;"> 
    <select name="event_added" class="selectpicker"> 
     {% for subscription in form.peerEventSubscriptions %} 
      <option value='{{typeDefEvent[loop.index0]}}'>{{ form_label(subscription.eventTypeHumanized) }}</option> 
     {% endfor %} 
    </select> 
    <input type="submit" class="btn btn-default" id = "addEventButton" data-rel="tooltip" title="AddEvent" value="Add Event" style="line-height: 1.5" /> 
</form> 

阿賈克斯/ jQuery的

var addEvent = $("#addEventButton"); 

addEvent.click(function(){ 

    $.ajax({ 
      method: "POST", 
      url: "{{ path('_add_new_sub_event') }}", 
      contentType: 'application/json; charset=utf-8', 
      data: { postVars: "EVENT_CLASS_JITTER EVENT_JITTER" } 
     }) 
     .done(function(msg) { 
      console.log("Data Saved: " + msg); 
      window.stop(); 
     }); 

}); 

控制器

回報這個數據,表單有效。

return array(
    'form' => $form->createView(), 
); 

獲取500內部服務器錯誤。我只是想基本採取這種形式,然後將其呈現到當前頁面,不刷新。

+0

什麼,當你直接去用'從你的瀏覽器{{路徑( '_ add_new_sub_event')}}'生成的URL會發生什麼? (我敢打賭這也是一個500錯誤) – HPierce

+1

這是一條POST路線 – Ryan

+0

夠公平的,但你提供的信息不足以讓任何人在這裏幫助你。 500錯誤意味着Symfony在某處根據您提供的網址捕捉到了異常。要調試它,您需要獲取關於拋出異常的更多信息。 – HPierce

回答

0

我邀請您使用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; 
 
    }

我希望我的回答給予幫助。