回答
如果它只是你从它返回一个正常的AJAX动作,我想我已经用下面的某处过去:
return $this->renderText(json_encode($something));
的廉价的方式:
function executeSomethingThatReturnsJson(){
$M = new Model();
$stuff = $M->getStuff();
echo json_encode($stuff);
die(); //don't do any view stuff
}
更聪明的方式:
一个更聪明的方法是创建sfActions这有助于处理JSON的东西的一个很好的子类。
在一个项目我最近,我创建了一个名为 'API'(./symfony generate:application api
)
应用程序,然后创建一个类似文件:
API/lib中/ apiActions.class.php
<?PHP
class apiActions extends sfActions {
public function returnJson($data){
$this->data = $data;
if (sfConfig::get('sf_environment') == 'dev' && !$this->getRequest()->isXmlHttpRequest()){
$this->setLayout('json_debug');
$this->setTemplate('json_debug','main');
}else{
$this->getResponse()->setHttpHeader('Content-type','application/json');
$this->setLayout('json');
$this->setTemplate('json','main');
}
}
}
请注意,我明确设置的模板在那里。
所以我jsonSuccess.php模板就是:
<?PHP echo json_encode($data);
虽然json_debugSuccess.php使事情变得更漂亮:
<?PHP var_dump($data); ?>
然后你就可以拥有一个扩展apiActions(而不是通常的sfActions控制器)看起来像这样:
<?php
class myActions extends apiAction {
public function executeList(sfWebRequest $request)
{
$params = array();
if ($request->hasParameter('id')){
$id = $request->getParameter('id');
if (is_numeric($id)){
$params['id'] = $id;
}
}
$data = Doctrine::getTable('SomeTable')->findAll();
$this->returnJson($data);
}
}
声明:上面的代码是复制/粘贴出我的应用程序,但简化。这只是为了说明的目的 - 但它应该让你朝着正确的方向前进。
这真的很有趣:)ü张贴了大量的代码,但之前的回答是一条线,它的工作:) 1+ü是渴望帮助虽然:) – 2010-06-01 22:43:06
右键 - !其他答案是一个更好的版本“廉价的方式”。我的答案的其余部分是基于环境来处理不同的事情,但我相信它可以做得更干净。 – timdev 2010-06-01 22:59:01
FYI:在Symfony的2.X的情况下,“快速,脏“的方式如下所示:
return new Response(json_encode($data), 200, array('Content-Type', 'text/json'));
我想你甚至可以只是把'响应(json_encode($数据))'如果你的路由规定好的格式('默认: {_controller:your:action,_format:json}') – 2012-09-12 13:15:58
返回新的JsonResponse(array);
- 1. Ajax JSON不返回
- 2. ajax JSON返回null
- 3. AJAX JSON返回undefined
- 4. 发送JSON jQuery Ajax到PHP并返回
- 5. 转换AJAX数据返回到JSON
- 6. symfony响应json ajax
- 7. jquery ajax返回undefined json
- 8. 返回值以JSON/AJAX
- 9. AJAX不返回任何JSON
- 10. Ajax返回JSON实现它?
- 11. JSON parseerror返回从AJAX
- 12. 在AJAX调用中返回JSON和HTML
- 13. ajax回调JSON对象返回undefined
- 14. 将ActiveRecord :: Relation作为json返回到rails中的ajax调用
- 15. JSON返回AJAX后jQuery的不确定
- 16. AJAX的Json返回类型成功
- 17. 从Ajax返回的JSON问题
- 18. jQuery插件不返回从AJAX的JSON返回的结果
- 19. 从PHP调用从AJAX返回的JSON返回
- 20. symfony - 从动作中的对等方法调用返回JSON
- 21. AJAX POST请求不返回JSON数据
- 22. JSON返回null jQuery $ .ajax后类型
- 23. $ .getJSON和$ .ajax无法返回JSON对象
- 24. 通过JSON/Ajax从PHP返回值
- 25. dojo ajax请求不返回json数据
- 26. ASP.NET AJAX在JSON指定时返回XML
- 27. Rails ajax不返回json格式
- 28. 返回Ajax/Json结果但不显示
- 29. Php with AJAX Post - 返回值JSON
- 30. jQuery AJAX JSON响应返回键“d”
如果你有网络调试酒吧活跃在开发者模式,你必须添加行“sfConfig ::集(‘sf_web_debug’,虚假);” – chiborg 2010-12-19 16:06:00
这将在响应主体返回JSON,但内容类型将是text/html的。添加'$这个 - > GETRESPONSE() - >的setContentType( '应用/ JSON');' – ilanco 2012-07-10 17:27:06