我正在使用 symfony 3.4、jquery 和 ajax 开发一个网络轮班管理系统。在一个表格中,用户选择一个地点和一个日期,并且必须按下一个按钮来获得可用的班次。我无法从服务器获得响应或请求没有被执行。这是我第一次应用ajax。
应该通过 POST 向我发送数据的脚本如下:
//AJAX CON JQUERY
$("#actualizar").on("click",consultarTurnos);
function consultarTurnos()
{
var sede = $("#sede").val();
var fecha = $("#fecha").val();
$.ajax
({
method: 'GET',
url: '/turnos',
data: datos,
dataType: 'json',
success: function (respuesta)
{
// alert('la respuesta es ' + respuesta);
$("#respuesta").html(data);
},
error : function(xhr, status)
{
alert('hay error');
//alert('ERROR -> '. status);
}
});
}
</script>
html代码如下:
<div class="col-lg-4 col-md-4">
<select class="form-control"
name="sede"
id="sede"
required=""
onchange="guardarSede();">
<option disabled selected hidden>Seleccione la sede</option>
<option value="1">Predio UNL - ATE</option>
<option value="2">Rectorado</option>
<option value="3">Esperanza</option>
</select>
</div>
<div class="col-lg-4 col-md-4">
<input class="form-control"
type="text"
id = "datepicker"
required=""
placeholder="Seleccione la fecha"
onchange="guardarFecha();"
disabled
/>
<textarea
name="fecha"
id="fecha"
style = "display:none"
onchange="habilitarTurno();">
</textarea>
<!-- -->
</div>
<div class="col-lg-2 col-md-2">
<button class="btn btn-default"
name ="actualizar"
id="actualizar"
type="button">Actualizar </button>
</div>
应该接收信息并以json格式响应的方法如下:
/**
* @Route("/turnos",name="turnos")
*/
public function buscarTurnos(Request $request)
{
//var_dump($_GET);
if($request->isXmlHttpRequest())
{
$sede = $request->request->get('sede');
$fecha = new \DateTime($request->request->get('fecha'));
$db = $this->getDoctrine()->getEntityManager();
$qb = $db->createQueryBuilder();
//escribo la consuLta
$qb->select('t.dia,t.horario,t.cupo')
->from('ComensalesBundle:Turno','t')
->where('t.dia = :fecha')
->andWhere('t.sede = :sede')
->setParameter('fecha',$fecha)
->setParameter('sede',$sede)
;
//genero
$q = $qb->getQuery();
//consulto
//$resultado = $q->getResult();
$resultado = $q->getArrayResult();
//retorno
return new JsonResponse($resultado);
}
return $this->redirect($this->generateUrl('final'));
}
进入浏览器控制台,显示如下: 从我所见,它是通过获取信息发送的,但没有从服务器获得响应。
searchTurnos() mysql 查询正常工作,该方法按预期返回 json 格式的响应。我猜错误在于我如何将 ajax 与 jquery 一起使用。任何合作都将永远感激。问候基督徒
在查看了您的代码后,我认为您忘记了一些非常具体的内容:
我希望它对你有帮助,如果没有,请告诉我它是怎么回事,这样我就可以看到它还有什么可能。
我认为您需要修改的其他内容在这里,在控制器方法部分:
最后,这行代码我不知道它是否与另一个方法有关,因为乍一看它似乎覆盖了请求的 if 的返回。
在这部分我不完全确定,因为我通常不使用注释,而是使用单个全局配置路由文件。
应该注意的是,我给你的建议是基于 100% 工作代码,因为我也使用 symfony 3.4.10 和 4 进行开发。