我已经创建了一个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 }
});
这是可能的吗?如果是的话,我怎么能这样做?
答案 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。