Jquery Symfony和Ajax
这是我第一次在Symfony上下文中涉猎Ajax,我可能对代码必须如何组织感到有点困惑 假设我的ajax调用如下所示:Jquery Symfony和Ajax,jquery,ajax,symfony1,xmlhttprequest,symfony-1.4,Jquery,Ajax,Symfony1,Xmlhttprequest,Symfony 1.4,这是我第一次在Symfony上下文中涉猎Ajax,我可能对代码必须如何组织感到有点困惑 假设我的ajax调用如下所示: $.getJSON('module/getMeSomeJSONThroughAjax', function(data) {console.log(data); } ) 在我的module/actions文件夹中,actions.class.php文件有一个方法: public function getMeSomeJSONThroughAjax() { // do som
$.getJSON('module/getMeSomeJSONThroughAjax', function(data) {console.log(data); } )
在我的module/actions文件夹中,actions.class.php文件有一个方法:
public function getMeSomeJSONThroughAjax()
{
// do something
return $jsonEncodedString;
}
请记住,我不是在为上述方法创建模板,因此我没有像大多数其他操作那样的execute前缀。简单地说,因为我不认为为AJAX HTTP请求只获取JSON数据而创建模板是一种过分的做法
但是,在我的浏览器中发生触发Ajax调用的事件时,我的控制台会记录以下内容:
> Failed to load resource: the server responded with a status of 404
> (Not Found)
> http://localhost:8080/customerview_dev.php/flashcard/getMeSomeJSONThroughAjax
我认为这是一个路由问题。一种简单解决问题的可能方法是为上述操作创建一个模板,并将该操作重命名为executeGetMeSomeJsonThroughAjax()
。但正如我所提到的,这个IMHO是过分的,必须有一个更加美观和适当的方式来完成这件事
Symfonians如何进行Ajax调用?即使没有模板,您仍然需要execute前缀。 如果需要,可以将模板设置为“无”,或者:
return $this->renderText($jsonEncodeString);
应该也行。这个想法是:
控制器:
namespace something;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class AjaxController extends Controller {
public function doSometingInAjaxAction()
{
$request = $this->getRequest();
$id = $request->get('id');
$em = $this->getDoctrine()->getManager();
$object = $em->getRepository('Bundle:Bundle')->find($id);
$objectJson = json_encode($object);
return new Response($modelosJson);
} }
观点:
<script>
$(document).ready(function(){
//...
$.ajax({
url: '{{ path('admin_ajax_ajax') }}',
data: id,
success: function (response)
{
//someting
}
});
});
</script>
这是我的基础和工作提示:如果没有遗留问题,请坚持使用Symfony2。真的吗?由于ajax jquery的问题,你想让我转到Symfony 2……ajax在Symfony的所有版本中都能正常工作,并且有很多网站在生产中Symfony 2显然更好[根据定义],如果你需要从头开始工作,那么使用过时的框架是没有意义的。如果您需要维护遗留代码,当然您必须坚持使用旧版本,正如我明确指出的。我标记了您的评论,因为它与我的问题无关,这是一个关于如何在Symfony 1.4环境中处理Ajax的问题,我感谢您向我推荐更好的框架的关注,但这并不能解决这个问题,请阅读stackoverflow规则,谢谢投票人:你能就你为什么投票否决我的问题发表评论吗?
admin_ajax_ajx:
path: /a/supercool/path//
defaults: { _controller: Bundle:Ajax:doSometingInAjax }