我正在开发一个Symfony应用程序,在树枝模板中我放置了一个图像,当单击图像时,我想发出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);
}
});
});
这是路由.yml中的路由
_ajaxUpdateInfo:
pattern: /update/data/from/ajax/call
defaults: { _controller: RedessAlquilerCochesBundle:Default:updateData }
这是控制器:
public function updateDataAction()
{
// Retrieve data
}
正如我所说,我得到一个找不到路径的错误,所以我想我弄错了 url 和路由部分,但我只是无法弄清楚问题是什么。
您正在尝试在未使用 twig 编译的文件中使用 twig 函数。
您可以使用 FOSJsRoutingBundle。或者将 {{ path('_ajaxUpdateInfo') }}
的值从 twig 模板传递给 js 脚本。
使用 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