Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Symfony和Ajax_Jquery_Ajax_Symfony1_Xmlhttprequest_Symfony 1.4 - Fatal编程技术网

Jquery Symfony和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

这是我第一次在Symfony上下文中涉猎Ajax,我可能对代码必须如何组织感到有点困惑

假设我的ajax调用如下所示:

$.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 }