symfony2,从Ajax客户端调用服务

时间:2013-06-10 11:37:41

标签: ajax symfony service

我已经创建了一个symfony2服务,我想从客户端Ajax(jQuery)调用,并在Ajax的成功函数中返回此服务所做查询的结果:

services:
  acme.services.exampleservice:
    class:  Acme\ExampleBundle\Services\ExampleService
    arguments: 
        entityManager: "@doctrine.orm.entity_manager"

的Ajax:

$.ajax({ 
     type: "GET",
     url: "?????????????",
     dataType: 'json',
     success: function(result)
         { //do something with the result query }
});

这是可能的吗?如果是的话,我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

没有。但是您可以创建一个控制器操作,它会调用您的服务并返回适当的响应。

答案 1 :(得分:2)

您需要创建一个到控制器的路径,让控制器完成查找服务并使用正确的参数执行它的工作。

my_route:
    path: /ajax/my/service
    defaults: { _controller: MyBundle:MyController:myService }

然后在你的控制器中:

<?php
class MyController 
{
    public function myServiceAction(Request $request) 
    {
        if ('POST' !== $request->getMethod() || !$request->isXmlHttpRequest()) {
            throw $this->createHttpNotFoundException();
        }

        $data = $this->get('acme.my_service.id')->myServiceMethod(/*...*/);

        return new JsonResponse(array($data/*...*/));
    }
}

然后在客户端,您可以(在此示例中)对“/ ajax / my / service”执行ajax发布并返回JsonResponse。