2012-11-27 61 views
25

Tôi đang tìm mẫu đơn giản hướng dẫn/ví dụ về ajax trong symfony2, cho người mới bắt đầu?Làm thế nào để tích hợp Ajax với Symfony2

Tôi có những ví dụ:

thế nào có thể chúng được đưa vào Symfon y2 app?

+1

Bạn đã cố tạo Entity/Form/Action/View không có ajax chưa? – Ziumin

+0

có, tôi tạo ra không có ajax –

+0

Hiện mã này (với Symfony2) mà không ajax, xin vui lòng – Ziumin

Trả lời

105

Thật dễ dàng. Tôi sẽ minh họa cách thực hiện cuộc gọi AJAX trong Symfony2 qua 3 bước. Đối với ví dụ sau, giả sử sử dụng thư viện jQuery.

  • Xác định tuyến đường cho hành động phải xử lý cuộc gọi AJAX của bạn. Ví dụ.

    AcmeHomeBundle_ajax_update_mydata: 
        pattern: /update/data/from/ajax/call 
        defaults: { _controller: AcmeHomeBundle:MyAjax:updateData } 
    
  • Xác định hành động trong bộ điều khiển MyAjax từ Home bó. Ví dụ.

    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)); 
    }  
    
  • Chuẩn bị AJAX cuộc gọi của bạn trong mẫu Twig của bạn, ví dụ .:

    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();}); 
    }); 
    

    Bạn có thể thay đổi ví dụ bằng cách sử dụng AJAX khác gọi.

+0

khiển http://pastebin.com/sPJkhpbY định tuyến http : //pastebin.com/mpb4X7CU ajax.js http://pastebin.com/tx70YNxz xem: http://pastebin.com/9DvVPYMJ khi tôi mở trình duyệt tôi chỉ nhìn thấy: { "code" : 100, "success": true} Tôi hoàn toàn mới bắt đầu –

+0

điều này có nghĩa là chúng tôi sẽ phải viết mã js trong php ?? – wilsonrufus

+1

@wilsonrufus ** NO! ** JS luôn được thực hiện ở phía máy khách, PHP ở phía máy chủ. Sử dụng ajax, bạn không hiển thị toàn bộ trang ở phía máy khách trong một cuộc gọi. Yêu cầu của khách hàng cho một URL. Máy chủ đầu tiên trả về trang PHP chính với mã JS mà tôi minh họa. Sau đó, khi trình duyệt nhận được phản hồi và tải trang chính (và cuối cùng là tài liệu đã sẵn sàng), mã JS được thực thi. Mã JS thực hiện cuộc gọi đến một hành động Symfony (được ánh xạ bởi một URL duy nhất) và chờ kết quả được xử lý bởi JS. – JeanValjean

Các vấn đề liên quan