回答
如果它只是你從它返回一個正常的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返回null
- 2. AJAX JSON返回undefined
- 3. Ajax JSON不返回
- 4. Ajax Json Symfony 2
- 5. AJAX返回時返回JSON值問題
- 6. 轉換AJAX數據返回到JSON
- 7. 發送JSON jQuery Ajax到PHP並返回
- 8. symfony響應json ajax
- 9. 返回值以JSON/AJAX
- 10. jquery ajax返回undefined json
- 11. ajax php json返回null
- 12. AJAX不返回任何JSON
- 13. Ajax調用並返回json?
- 14. Ajax返回JSON實現它?
- 15. JSON parseerror返回從AJAX
- 16. 從ajax返回數據json
- 17. AJAX JSON解析返回false
- 18. 在AJAX調用中返回JSON和HTML
- 19. ajax回調JSON對象返回undefined
- 20. 將ActiveRecord :: Relation作爲json返回到rails中的ajax調用
- 21. 處理AJAX返回的對象JSON
- 22. JSON無法讀取返回的ajax值
- 23. 從ajax和json返回數組的php
- 24. 返回JSON格式的問題PHP/AJAX
- 25. 從Ajax返回的JSON問題
- 26. ExtJS AJAX返回的JSON對象
- 27. AJAX的Json返回類型成功
- 28. jQuery的 - Ajax不是返回JSON響應
- 29. JSON返回AJAX後jQuery的不確定
- 30. jQuery插件不返回從AJAX的JSON返回的結果
如果你有網絡調試酒吧活躍在開發者模式,你必須添加行「sfConfig ::集(‘sf_web_debug’,虛假);」 – chiborg 2010-12-19 16:06:00
這將在響應主體返回JSON,但內容類型將是text/html的。添加'$這個 - > GETRESPONSE() - >的setContentType( '應用/ JSON');' – ilanco 2012-07-10 17:27:06