集成JS和PHP - 有没有更好的方法


Integrating JS and PHP -- is there a better way?

我正在尝试通过集成自定义JS对象来改善PHP程序的UI。 但是,由于两种语言都没有意识到对方,我的方法感到笨拙和尴尬。

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

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

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

有没有更好的方法不涉及第三方库意识形态的学习曲线,或者我已经基本上达到了集成的实际极限?

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

您可以尝试使用模板框架之一,如 Mustache、灰尘.js或 Handlebars。 这样,您就可以外部化和标准化可以在PHP和JavaScript之间共享的模板。

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

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

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

因此,让我们绕过这个问题:

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

数据检索和呈现

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

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

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

管理操作和数据分页

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

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

删除时,您还会删除 tr 元素,在移动

时,您还会移动 tr 元素。

没有

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

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

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