0

我正在尝试通过集成自定义 JS 对象来改进 PHP 程序的用户界面。但是,由于两种语言都没有意识到另一种语言,所以我的方法论显得笨拙和尴尬。

以呈现一组数据库记录和一组按钮为例,例如隐藏、删除、编辑等。PHP 调用 mysql 并加载数据集,因此是知道记录 ID 的人。作为格式化记录以供最终显示的一部分,我创建了一些<table>结构,其中包含适当的表单 ID、id="key_part'.$recid.'"自定义 JS 对象的 HTML 框架等,以及onclick="'.$jsobj.'.jsRoutine('.$recid.') ;"对各种 JS 例程的表单调用。

然后我创建 JS 代码以了解各种 id,以便它知道如何使正确的 HTML 代码隐藏、可见、更改颜色、长头发或其他任何东西。

我认为,让这两个不同的代码库保持同步的问题困扰着我。出于显而易见的原因,我一直试图避免这种情况。

有没有更好的方法不涉及第三方图书馆理念的学习曲线,或者我基本上已经达到了集成的实际极限?

提前感谢您的建设性意见!

4

2 回答 2

1

您可以尝试使用 Mustache、dust.js 或 Handlebars 等模板框架之一。通过这种方式,您可以外部化和标准化您可以在 PHP 和 JavaScript 之间共享的模板。

于 2012-05-21T18:25:09.417 回答
1

我会用一个实际的例子来解释。

你说过你有一堆记录你想要编辑、删除、隐藏等。我已经做过很多次了:将记录列出到一个表中,其中“操作”列包含打开以进行编辑、删除、隐藏等操作/取消隐藏、上移/下移、第一个/最后一个...

当然,这一切都只能通过 PHP 和表单提交或页面重定向的方式来完成,但为什么不做这么多用户友好的数据管理呢?所以我使用了 AJAX 和 JSON,而 jQuery 框架是我最好的朋友来实现我将进一步描述的内容。

所以让我们绕过这个问题:

  • 我们有一个存储在数据库中的数据(让我们使用 MySQL)
  • 我们有一个用 PHP 编写的服务器端(或者必须编写它)
  • 我们有一个前端,允许我们使用 jQuery(AJAX 和 JSON)管理数据
    • 用户执行的每个操作都将通过 AJAX 请求 (jQuery) 发送到服务器 (PHP),服务器将管理该操作并响应前端
    • 数据本身也由 jQuery 检索和呈现

数据检索和呈现

这将通过 PHP 查询 MySQL 数据库来完成。您将准备方法/操作,该方法/操作将采用偏移量和限制等参数来仅查询具体的一组记录。

在前端,AJAX 请求将被发送到 PHP 以检索记录。PHP 可以返回完整的 HTML 标记,您将在表格末尾附加该标记,或者 HTML 标记可以在 jQuery 中从 JSON 格式的数据中设置。我认为第二种方法更好。

您可以创建一个包含复选框的列(是的,所有表都可以在一个表单中,但这不是必须的),该值将带有记录的 ID。然后,您将写下包含您要呈现的数据的其他行以及包含特殊操作链接的“操作”列。

管理操作和数据分页

所以我们有一个表,默认为 15 行,第一列带有复选框和记录 ID,数据列和操作列。

用户单击第三行的隐藏操作 - 通过 jQuery,您可以捕获单击事件并从该链接中获取父 tr 元素。然后你找到它的第一个孩子 - td 从中你找到复选框的值 - 记录的 ID。所以我们现在知道我们想要隐藏 ID 为 9 的记录。必须向将管理隐藏操作的服务器执行 AJAX 请求(可能只是在数据库中为该记录设置一些标志),成功后响应是发送回前端 - 这是您隐藏整个 tr 元素(以及其中的所有数据)或只是更改一些显示隐藏/可见标志的图标的时刻。

删除时,你也删除了 tr 元素,移动时,你也移动了 tr 元素。

没有重定向,没有重新加载,没有提交。

这只是一个上下文,代码和所有工作都在你身上。我只是想描绘一下如何使用 PHP + jQuery 使用 JSON 和 AJAX 来实现这一点。

此外,这种方法需要启用 javascript,但您仍然可以编写应用程序,以便在没有 javascript 支持时能够提交、重定向、重新加载...

于 2012-05-21T18:54:12.080 回答