2012-11-27 53 views
25

我正在寻找一个简单的教程/关于symfony2中的ajax的例子,对于初学者?如何将Ajax与Symfony2集成

我有这方面的例子:

哪有这些被放入Symfon中y2应用程序?

+1

您是否尝试过创建实体/表单/动作/视图没有Ajax? – Ziumin

+0

是的,我创建一个没有AJAX –

+0

显示验证码(与Symfony2的)没有Ajax,请 – Ziumin

回答

105

很简单。 我将演示如何通过3个步骤在Symfony2中执行AJAX调用。对于以下示例,假定使用jQuery库。

  • 定义必须处理AJAX调用的操作的路由。例如。

    AcmeHomeBundle_ajax_update_mydata: 
        pattern: /update/data/from/ajax/call 
        defaults: { _controller: AcmeHomeBundle:MyAjax:updateData } 
    
  • Home束定义在MyAjax控制器的动作。例如。

    public function updateDataAction(){ 
        $request = $this->container->get('request');   
        $data1 = $request->query->get('data1'); 
        $data2 = $request->query->get('data2'); 
        ... 
        //handle data 
        ... 
        //prepare the response, e.g. 
        $response = array("code" => 100, "success" => true); 
        //you can return result as JSON 
        return new Response(json_encode($response)); 
    }  
    
  • 准备好您的通话AJAXTwig模板,例如:

    function aButtonPressed(){ 
        $.post('{{path('AcmeHomeBundle_ajax_update_mydata')}}',    
           {data1: 'mydata1', data2:'mydata2'}, 
          function(response){ 
            if(response.code == 100 && response.success){//dummy check 
             //do something 
            } 
    
        }, "json");  
    } 
    
    $(document).ready(function() {  
        $('button').on('click', function(){aButtonPressed();}); 
    }); 
    

    您可以通过使用其他的AJAX调用改变的例子。

+0

控制器 http://pastebin.com/sPJkhpbY 路由 HTTP ://pastebin.com/mpb4X7CU ajax.js http://pastebin.com/tx70YNxz 观点: http://pastebin.com/9DvVPYMJ 当我打开浏览器,我只看到: { “代码” :100,“success”:true} 我完全初学者 –

+0

这意味着我们必须在php中写js代码? – wilsonrufus

+1

@wilsonrufus **不!!JS总是在客户端执行,PHP在服务器端执行。使用Ajax,您不会在一次调用中呈现客户端的整个页面。客户端请求一个URL。服务器首先返回带有我说明的JS代码的主PHP页面。然后,一旦浏览器收到响应并加载主页面(最后文档已准备好),JS代码就会执行。 JS代码调用Symfony操作(由唯一的URL映射)并等待JS处理的结果。 – JeanValjean