2012-11-27 62 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