2

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

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

阿贾克斯:

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

这是可能的吗?,如果可以,我该怎么做?

4

2 回答 2

2

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

于 2013-06-10T12:44:31.330 回答
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。

于 2013-06-10T22:04:31.837 回答