Javascript 使用twig重构ajax

Javascript 使用twig重构ajax,javascript,php,ajax,twig,Javascript,Php,Ajax,Twig,我正在尝试重构一个链式ajax调用(太链式了),以便使用twig更简单地分离HTML、PHP和js。 我有点像: $.ajax({ type: "GET", dataType: "json", url: "{{ urlsf }}",// THIS WILL LOAD SOME DATA success: function (response) { $.ajax({ type: "POST", data: { p

我正在尝试重构一个链式ajax调用(太链式了),以便使用twig更简单地分离HTML、PHP和js。 我有点像:

  $.ajax({
    type: "GET",
    dataType: "json", 
    url: "{{ urlsf }}",// THIS WILL LOAD SOME DATA
    success: function (response) {
      $.ajax({
         type: "POST",
         data: { per: response } ,
         url: 'renderPage.php',
         success: function (cont_contador) {
           $('#main_content').html(cont_contador);
         }//end of success
      });//end of ajax for render call
    }//end of success
  });//end of ajax that loads data
同样的成功->ajax调用重复了好几次,但我认为一次就足以说明我的观点。 php呈现另一个文件,该文件具有一个js/jquery函数和一个使用twig函数的div,并将响应设置为twig变量,将其传递给呈现数组

在使用控制器处理负载时,我将移动到主库,并将移动到主HTML结构(有细枝)

现在,这就是我遇到这些麻烦的地方: 我无法使用javascript将响应移动到twig。 我不能用javascript响应变量替换twig,因为这个twig变量正在代码的其他地方使用。 我不想保留ajax调用,事实上,我想删除它以只保留json调用


编辑

我将尝试为我要寻找的内容创建一个模式:

  • 主控制器:加载php连接、设置安全性、设置主要细枝变量并呈现主模板
  • 主模板:加载CSS和js库,包括jquery和其中的主要js自定义函数,使用includes包含HTML和twig块主结构。调用。准备好了吗
  • js函数:包含与HTML关联的事件和函数

实际上,有一个函数由一个事件触发,它调用API,返回数据,然后呈现一个部分,该部分触发另一个事件,该事件呈现另一个部分,然后触发另一个。。。它可以一次触发/加载,但在其中一次渲染时,它保存了一个用于web其他部分的细枝变量。我想让twig变量以不同的方式启动。

对于twig,有一个小的解释供将来参考:

Twig是一个模板处理器。模板处理器从另一个包含HTML的文件生成HTML文件,该文件具有以下附加功能:

  • 变量和函数
  • 文本替换
  • 文件包含(或转换)
  • 条件求值与循环
此过程发生在服务器端。客户端只获得一个HTML结果。 客户端语言(如JS)可以直接更改此HTML,但不能更改未渲染的变量或循环。这是因为JS从未看到这种逻辑


但是,使用AJAX,您仍然可以运行服务器端代码。我建议首先在数据库中设置细枝变量。每当您在db中更改此记录时,所有模板都将更新。

用{{urlsf}表示的url是什么?不确定您要实现什么,但如果您想避免任何ajax调用,则需要在主控制器中呈现所有内容?但ajax调用无法在主模板中设置/更改
twig
-变量。这个问题并不令人困惑,但它只是忽略了细枝的实际用途。这几乎可以肯定是回调上DOM操作的工作。如果需要通过模板引擎推送任何数据,请请求服务器端,而不是客户端。主模板不知道ajax呈现的任何其他模板,模板已经呈现并作为输出(html)提供给客户端