【问题标题】:Simple Web app styled CMS, but having problems with ajax简单的 Web 应用程序样式的 CMS,但 ajax 有问题
【发布时间】:2011-11-02 05:18:43
【问题描述】:

我正在构建一个简单的 7 页、数据库驱动的网站,并且我想为它构建一个简单的 CMS。一个超级简单的 CMS,仅用于更改某些页面上的文本并将图像上传到另一个页面。我什至不会称它为 CMS。我主要是为了学习构建 Web 应用程序的经验。

我的想法是使用 php 构建一个简单的网页,该网页将具有一些简单的登录处理。然后使用 ajax 为每个页面加载不同的模块。就像在主页上一样,我只希望文本可以更改。我认为我可以做的是使用 ajax 加载另一个 php 页面,该页面只是加载一个 tinymce 编辑器并使用数据库中的文本预加载它,并使用一个简单的 ajax 按钮将文本上传到数据库。类似于 iframe,但没有 iframe。

当我尝试这样做时,我得到的只是一些文本和文本区域框。原来它只加载文本而不是javascript。进一步阅读后,我发现我可以使用 eval 将加载的文本转换为 javascript,但这会导致我理解的范围问题。

所以我基本上想知道我该怎么做,我的目标是类似于谷歌和/或雅虎邮件应用程序。起初我想我可以把我要在主页上使用的所有 javascript 代码扔掉,然后用 ajax 加载内容,但是从我读到的内容来看,javascript 不会将其自身应用于新代码,因为它不是t 在页面首次加载时将代码应用于 DOM 元素时。我的下一个想法是加载内容,然后使用 jquery 加载脚本并将其应用于新加载的内容,但试图找到任何内容充其量是令人困惑的。

有没有人做过类似的事情并且愿意分享他们学到的东西,或者只是知道我在说什么并且可以帮助我?还是解决方案很简单,我只是没看到?

【问题讨论】:

  • 我想应该补充一点,我已经用 php 构建了后端 cms。使用 tinymce 作为编辑器。我对此没有任何问题。我想要做的就是将它转换成一个网络应用程序来体验。我在根据需要将模块(我想这就是它们的名称)加载到页面时遇到问题。赋予它网络应用的感觉。

标签: php javascript ajax web-applications content-management-system


【解决方案1】:

我们可以使用更多细节(如代码、过程等),但是我想帮忙。

关于tinymce,这是我的看法:

  • 创建一个包含 timyMCE 的 php 文件。让我们将其命名为“tinymce.php”
  • 创建一个将文本加载到数据库中的 php 文件。我们称之为“defaulttext.php”
  • 在您的主页(应用程序页面)上,通过 ajax 加载“tinymce.php”。这会将 tinymce 编辑器从 php 文件加载到主应用页面
  • 在“tinymce.php”加载后创建回调(前一个过程成功后的函数调用)。在此调用中,调用“defaulttext.php”并将其内容加载到之前加载的“tinymce.php”内容的文本框中。

总共有 2 个调用:调用编辑器,然后调用默认内容。

在加载任何内容之前,您可以使用预加载的脚本来执行所需的操作。创建脚本来处理 DOM、事件等(事件处理程序)。

【讨论】:

  • 正如我所说的,我已经用 php 构建了后端,但无论如何感谢。预加载脚本的问题在于,新按钮、tinymce 的新实例以及所有有趣的 javascript 内容等代码并未应用于新下载的 html 注入代码。
  • 您是否在使用任何 JavaScript 库,例如 jQuery?在 jQuery 中,有一个函数 .html() 可以解析返回的 javascript 以及返回的 html。它在某些时候有点像 eval() 之类的函数,评估混合在返回的 HTML 中的脚本。
  • 我正在使用 jQuery 的 ajax 函数将数据加载到 div 中。我会试试看。
  • 谢谢,这对我的简单测试有效。这意味着我用我的实际代码破坏了一些东西。
【解决方案2】:

保持简单。您不需要 AJAX 来构建简单的 CMS。只是广告支持处理查询参数,例如 ?edit=true 到您的页面。当服务器接收到该信息时,将页面发送到支持代码编辑的编辑器中,例如 EditArea。为了保存,简单的 HTTP 将数据发送回服务器并将其存储回数据库,或者更好的是,直接返回磁盘。如果你做对了,你可以把它连起来直接编辑每个页面的 php 文件。是的,很多人都这样做了 :) 祝你好运。

【讨论】:

  • 实际上我已经创建了一个基于 php 的后端,它可以完成我需要做的所有事情,所以这不是问题。我正在尝试做的是学习如何制作网络应用程序并这样做,因为我相信这是一次很好的学习体验。
猜你喜欢
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
相关资源
最近更新 更多