如何在没有ajax调用的情况下正确设置树枝变量

时间:2019-03-01 12:19:06

标签: 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: { 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调用重复了几次,但我认为足以说明我的意思。 renderPage.php会渲染另一个文件,该文件具有一个js / jquery函数和一个使用twig函数的div,并且将响应设置为将其传递到render数组的twig变量。

在使用控制器处理负载时,我将移到了主库和HTML结构(带有树枝)中。

现在,这是我遇到这些麻烦的地方: 我无法使用javascript将响应移动到树枝。 我无法用javascript response var替换树枝,因为此树枝变量已在代码的其他位置使用。 我不想保留ajax调用,实际上,我想删除它以仅保留json调用。


修改

我将尝试为所要查找的内容建立一个架构:

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

实际上,有一个由一个事件触发的函数,该事件调用API,返回数据,然后渲染一个部分,然后触发另一个事件,该事件又渲染了另一个部分,然后触发另一个事件……所有这些都可以一次性完成,但是在其中一种渲染下,它会保存一个在网络其他部分使用的树枝变量。我想让那个树枝变量以某种不同的方式开始。

1 个答案:

答案 0 :(得分:1)

为将来的参考,对Twig进行了一些简短的解释:

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

  • 变量和函数
  • 文本替换
  • 文件包含(或包含)
  • 条件评估和循环

此过程在服务器端上进行。客户端仅获得HTML结果。 客户端语言(例如JS)可以直接更改此HTML,但不能更改未呈现的变量或循环。这是因为JS从来没有看到这种逻辑。

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