Symfony2 Ajax Post在使用注释进行路由时变为GET


symfony2 ajax post becomes get when using annotation for routing

我最近在我的symfony2捆绑包上切换了路由,以便在控制器中使用内联注释,而不是routeting.yml文件。 之后,ajax post 请求开始在没有参数的情况下通过。 我查看了它,注意到日志将发布请求显示为 [REQUEST_METHOD] => GET。 起飞带注释的路线将请求变成了一个帖子。 在我切换路由之前,事情运行良好。

这是控制器和路由

class DefaultController extends Controller
{
  /**
   * @Route("/emailShare/", name="emailShare")
   * @Method({"GET", "POST"})
   */
  public function indexAction()

和 jquery ajax

$.ajax({
        type : 'post',
        url: '/v2/social/emailShare',

如果我使用 curl 发布到同一个 url,它会在日志中显示为帖子。

curl -d "param1=value1&param2=value2" http://mysite.com/v2/social/emailShare/

我的基于注释的路由通过 POST 执行 Ajax 调用没有问题。 与您的设置有一些不同之处:我根本没有在控制器中使用@Method注释,并且(FWIW)我的jQuery Ajax方法值全部大写。 例如:

class DefaultController extends Controller
   {
    /**
     *
     * @Route("/", name="emailShare")
     */
    public function indexAction()

还有jQuery(我正在使用Twig来设置路径):

  $.ajax({
      type: 'POST',
      url: '{{path("emailShare")}}',

以及相关的 routeting.yml 行:

AcmeDemoBundle:
resource: "@AcmeDemoBundle/Controller/"
type:     annotation
prefix:   /