我正在开发一个Symfony应用程序,在一个twig模板中我放置了一个图像,当单击该图像时,我想发出一个ajax请求从控制器中检索一些数据。
我的问题是我在尝试访问控制器中的url时遇到404错误。
这是脚本代码:
$('.info').click(function ()
{
var optionSelected = $('#pickupCenter').val();
$.ajax({
url: "{{ path('_ajaxUpdateInfo') }}",
type: "POST",
data: { "optionSelected" : optionSelected },
success: function(data) {
alert (data);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert('Error: ' + errorThrown);
}
});
});
这是routing.yml中的路由
_ajaxUpdateInfo:
pattern: /update/data/from/ajax/call
defaults: { _controller: RedessAlquilerCochesBundle:Default:updateData }
这是控制器:
public function updateDataAction()
{
// Retrieve data
}
正如我所说,我得到一个路径未找到错误,所以我想我得到的网址和路由部分错了,但我不知道是什么问题。
答案 0 :(得分:1)
您正在尝试在未使用twig编译的文件中使用twig函数。
您可以使用FOSJsRoutingBundle。
或者将{{ path('_ajaxUpdateInfo') }}
的值从twig模板传递给你的js脚本。
答案 1 :(得分:0)
使用FOSJsRoutingBundle以javascript代码公开路线。
示例:
$.ajax({
type: "POST",
url: Routing.generate('_ajaxUpdateInfo'),
data: {somedata: somedatavalue},
dataType: "json",
success: function(response) {
//------------------
}
});
/**
* @Route("/update/data/from/ajax/call", name="_ajaxUpdateInfo", options={"expose"=true})
*/
public function updateData()
{
//--------------------------
}
我写过注释。您可以在yml中公开路径,如下所示:
# app/config/routing.yml
_ajaxUpdateInfo:
pattern: /update/data/from/ajax/call
defaults: { _controller: RedessAlquilerCochesBundle:Default:updateData }
options:
expose: true