php - Symfony,使用 ajax 将 html 表单提交给控制器
问题描述
我试图使用 AJAX 将 hmtl 表单的数据发送到控制器,但控制器没有收到错误显示的数据。
html表单:
<form id="evento" name="evento" method="post" >
<div class="form-group">
<label for="evento-titulo" class="col-form-label">Título:</label>
<input type="text" class="form-control" id="evento_titulo" name="evento_titulo">
</div>
<div class="form-group">
<label for="evento_descripcion" class="col-form-label">Descripción:</label>
<textarea class="form-control" id="evento_descripcion" name="evento_descripcion"></textarea>
</div>
<div class="form-group">
<label for="evento_inicio" class="col-form-label">Inicio:</label>
<input type="datetime-local" class="form-control" id="evento_inicio" name="evento_inicio">
</div>
<div class="form-group">
<label for="evento_fin" class="col-form-label">Fin:</label>
<input type="datetime-local" class="form-control" id="evento_fin" name="evento_fin">
</div>
<div class="form-group">
<label for="evento_checkmail" class="col-form-label">
<input type="checkbox" id="chkmail" name="chkmail" style="vertical-align:middle;">
Añadir correo                
Color:
<input type="color" id="color" name="color" style="vertical-align:middle;">
</label>
<input type="email" class="form-control" id="evento_mail" name="evento_mail" disabled="disabled">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-danger" data-dismiss="modal">Cerrar</button>
<button type="submit" class="btn btn-outline-success" id="save_event" name="save_event">Confirmar</button>
</div>
</form>
通过ajax将表单数据传递给控制器:
$("#evento").submit(function(){
var data = $('#evento').serialize();
$.ajax({
type: "POST",
data: data,
url: {{ render( controller('CalendarBundle:Calendar:addEvent')) }},
success: function(data)
{
console.log($data);
alert('OK');
}
}); });
控制器:
public function addEventAction() {
$em = $this->getDoctrine()->getManager();
//fetch the POST Data
$request = $this->get('request_stack')->getCurrentRequest();
$data = $request->request->all();
$evento = new Evento();
$evento->setBeginat(new \DateTime($data["evento_inicio"]));
$evento->setEndat(new \DateTime($data["evento_fin"]));
$evento->setTitle($data["evento_titulo"]);
$evento->setMail($data["evento_mail"]);
$evento->setDescription($data["evento_descripcion"]);
$evento->setColor($data["color"]);
$em->persist($evento);
$em->flush();
//return response
$serializedEntity = $this->container->get('serializer')->serialize($evento, 'json');
$response = new Response($serializedEntity);
$response->headers->set('Content-Type', 'application/json');
return $response;
}}
这是错误信息
在渲染模板期间引发了异常(“注意:未定义索引:evento_inicio”)。
解决方案
您的 Ajax 请求正在以application/json
内容类型发送,但您的控制器正在等待application/x-www-form-urlencoded
。
尝试获取您json_decode()
的.$request->getContent()
$data
推荐阅读
- powerbi - 如何使用 measure 和 Calculate 编写 if 语句?
- react-native - 通知中未显示 Expo Android 徽章编号
- javascript - 是否可以同时向单个 API 发送两次或多次发布请求?
- android - Android NDK - 如何从本机代码中获取表面
- php - PHP FPM Worker 问题(无响应)
- javascript - 如何将变量字符串传递给 const 对象
- perl - zip文件压缩比为0
- android - ViewPager 多次调用 getItem 方法?
- node.js - 在Node js mysql错误中找不到模块'./routes/customer'
- c# - 简单的注射器和自动映射器