我需要在我的 symfony 项目中存储一些地图参数,为此我需要在我的视图中实现一些 Ajax,它能够将一些信息传递给控制器。
我阅读了文档,尝试编写一些代码,但我无法使其工作。而且 Ajax 调试起来真的很痛苦。这是控制器部分:
/**
* @Route("/ajax", name="_recherche_ajax")
*/
public function ajaxAction()
{
$isAjax = $this->get('Request')->isXMLHttpRequest();
if ($isAjax) {
return new Response('This is ajax response');
}
return new Response('This is not ajax!', 400);
}
和 JS:
map.on('zoomend', function(e) {
// use callback e variable
console.log('zoom: ' + e.target.getZoom());
$.ajax({
type: "POST",
url: "/recherche/ajax",
data: {
zoom: e.target.getZoom()
},
dataType: "json",
success: function(response) {
console.log(response);
}
});
});
我检查它确实存在的 urlrecherche/ajax
并按预期返回“这不是 Ajax”。但是console.log 没有返回任何值...
这是正确的方法吗?
编辑: 看起来控制器无法处理 POST 请求。我试图将注释修改为:
/**
* @Route("/ajax", name="_recherche_ajax")
* @Method({"GET", "POST"})
*/
但它返回:
([Semantical Error] The annotation "@Method" in method MySite\SiteBundle\Controller\RechercheController::ajaxAction() was never imported. Did you maybe forget to add a "use" statement for this annotation?)