【问题标题】:How to integrate Ajax with Symfony2 [closed]如何将 Ajax 与 Symfony2 集成
【发布时间】:2012-11-27 12:47:00
【问题描述】:

我正在寻找关于 symfony2 中 ajax 的简单教程/示例,适合初学者?

我有这些例子:

如何将它们放入 Symfony2 应用程序中?

【问题讨论】:

  • 您是否尝试过不使用 ajax 创建实体/表单/操作/视图?
  • 是的,我创建时没有 ajax
  • 请在不使用 ajax 的情况下显示此代码(使用 Symfony2)
  • 你的问题很糟糕,但答案对我帮助很大

标签: ajax symfony


【解决方案1】:

这很容易。 我将通过 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)); 
    }      
    
  • 在您的Twig 模板中准备您的AJAX 调用,例如:

    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 调用来更改示例。

【讨论】:

  • controller pastebin.com/sPJkhpbY routing pastebin.com/mpb4X7CU ajax.js pastebin.com/tx70YNxz view: pastebin.com/9DvVPYMJ 当我打开浏览器时我只看到: {"code":100,"success":true} 我完全初学者
  • @wilsonrufus NO! JS 总是在客户端执行,PHP 在服务器端执行。使用 ajax,您不会在一次调用中在客户端呈现整个页面。客户端对 URL 的请求。服务器首先返回带有我说明的 JS 代码的主 PHP 页面。然后,一旦浏览器收到响应并加载主页(最终文档准备就绪),JS 代码就会被执行。 JS 代码调用 Symfony 操作(由唯一的 URL 映射)并等待由 JS 处理的结果。
  • 不需要测试请求是否为 xmlHttpRequest 吗??
  • 使用新的 JsonResponse($data) 代替新的 Response(json_encode($data))
  • 对于 Symfony 2.2 及更高版本,您可以简单地使用 return new JsonResponse($response) 而无需对其进行编码。
猜你喜欢
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 2016-07-14
相关资源
最近更新 更多