我尝试使用AJAX
方法使用POST
提交表单。
我正在使用symfony 2.8.9
主页面是Fullcalendar视图,表单位于popUp模式中:
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Définition d'un événement</h4>
</div>
{{ form_start(FORM) }}
<div class="modal-body">
{{ form_row(FORM.dateDebut) }}
{{ form_row(FORM.dateFin) }}
{{ form_row(FORM.salle, {'attr' : {'onChange' : 'afterSelectSalle();'} }) }}
{{ form_row(FORM.formateur, {'attr' : {'onChange' : 'afterSelectFormateur();'} }) }}
{{ form_row(FORM.module, {'attr' : {'onChange' : 'afterSelectModule();'} }) }}
{{ form_row(FORM.promotion, {'attr' : {'onChange' : 'afterSelectPromotion();'} }) }}
{{ form_row(FORM.type) }}
</div>
<div class="modal-footer">
<input type="hidden" id="{{ FORM.vars.name }}_eventId" value=""/>
<button type="button" id="enregistrer" class="btn btn-success" data-dismiss="modal">Enregistrer</button>
<button type="button" id="annuler" class="btn btn-default" data-dismiss="modal">Annuler</button>
<button type="button" id="supprimer" class="btn btn-danger" data-dismiss="modal">Supprimer</button>
</div>
{{ form_end(FORM) }}
<div class="modalAttente"></div>
</div>
</div>
这是我要求保存以前表格中设置的数据的方法:
function saveInBase(donnees) {
var ajout = true;
if(eventSelectionne !== null) {
ajout = false;
}
$.ajax({
type: 'POST',
url: ajout ? Routing.generate('planning_create') : Routing.generate('planning_edit', {id: donnees.id}),
dataType: 'json',
data: donnees,
success: function (data) {
eventSelectionne = getInfosEvent(eventSelectionne, data);
if (ajout) {
$('#calendar').fullCalendar('renderEvent', eventSelectionne, true);
} else {
$('#calendar').fullCalendar('updateEvent', eventSelectionne);
}
},
complete: function () {
$('.btn#enregistrer').prop('disabled', false);
displayModalAttente(false);
}
});
}
我遇到的问题是,当我提交表单时,我的控制器会返回500错误。
public function createAction(Request $request)
{
$event = new Event();
$form = $this->createForm(
EventType::class,
$event
);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid())
{
$em = $this->getDoctrine()->getManager();
$event->setDateSaisie(new \DateTime);
$em->persist($event);
$em->flush();
return new JsonResponse($event->toJson(), JsonResponse::HTTP_OK, array('Content-Type' => 'application/json'));
}
return new JsonResponse(array('errors' => $this->getErrorsAsArray($form)), JsonResponse::HTTP_BAD_REQUEST, array('Content-Type' => 'application/json'));
}
我的$ request var包含表单数据,但行 $ form-&gt; handleRequest($ request)不起作用,并显示以下错误:
执行&#39; INSERT INTO事件时发生异常(date_debut, date_fin,date_saisie,type,formateur_id,salle_id,promotion_id, module_id)VALUES(?,?,?,?,?,?,?,?)&#39;用params [null,null, &#34; 2016-08-08 12:50:50&#34;,null,null,null,null,null]:
表单传输的所有数据都已消失,我不明白为什么不这样做。
使用AJAX
方法在POST
中提交表单的任何想法?