2

クライアント側の Ajax(jQuery) から呼び出し、Ajax の成功関数でこのサービスによって作成されたクエリの結果を返したい symfony2 サービスを作成しました。

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 に答える