javascript - 使用twig重构ajax

标签 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,另外将响应设置为 twig 变量,将其传递给渲染数组。

在使用 Controller 处理负载时,我将 移动到主库和主 HTML 结构(有 Twig )。

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

<小时/>

编辑

我将尝试为我正在寻找的内容制定一个架构:

  • 主 Controller :加载 php 连接、设置安全性、设置主 Twig 变量并渲染主模板
  • 主模板:加载 CSS 和 js 库,其中包括 jquery 和主要 js 自定义函数,使用 include 包含 HTML 和 twig block 主要结构。调用.准备好了
  • js 函数:包含与 HTML 关联的事件和函数

实际上有一个由一个事件触发的函数,该函数调用API,返回数据,然后渲染一个部分,该部分触发另一个事件,该事件渲染另一部分,然后触发另一个......可以一次全部触发/加载,但在其中一个渲染中,它保存了网络其他部分使用的一个 Twig 变量。我希望以某种不同的方式启动该 Twig 变量。

最佳答案

为了以后的引用,Twig 的一个小解释:

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

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

此过程发生在服务器端。客户端仅获取 HTML 结果。 客户端语言(例如 JS)可以直接更改此 HTML,但不能更改未渲染的变量或循环。这是因为 JS 永远看不到这个逻辑。

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

关于javascript - 使用twig重构ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54944544/

相关文章:

php - 使用 AJAX 将 DOM 元素值传递给 PHP

javascript - 如何在jquery中单击按钮时获取所选下拉值的值

php - Codeigniter:单击提交按钮后没有记录保存在 mysql 数据库中

javascript - 使用 JQuery 删除动态创建的列表元素的按钮

javascript - 如何从 Java Controller 下载文件到 javascript

javascript - php简单联系表单在浏览器刷新时重新提交

javascript - 谷歌翻译将英语设置为默认,以便翻译回来

asp.net - ScriptManagers 的 ScriptMode 中的 Debug 和 Release 有什么区别?

javascript - CckEditor 不会销毁实例

javascript - Ajax请求和回调更新同时触发