从 ajax post request 访问 symfony2 控制器



我正在开发一个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

最新更新