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

时间:2012-05-21 18:15:19

标签: php javascript integration

我正在尝试通过集成自定义JS对象来改进PHP程序的UI。但是,由于这两种语言都没有对另一种语言的认识,我的方法感觉很尴尬和尴尬。

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

然后我创建JS代码以了解各种ID,以便它知道如何使正确的HTML代码隐藏,可见,改变颜色,长出头发等等。

我认为,保持这两个不同代码库同步困扰我的问题。我总是试图避免这种情况,原因很明显。

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

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

2 个答案:

答案 0 :(得分:1)

您可以尝试使用其中一个模板框架,如Mustache,dust.js或Handlebars。这样,您可以外化和标准化您可以在PHP和JavaScript之间共享的模板。

答案 1 :(得分:1)

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

你说你有一堆你要编辑,删除,隐藏等的记录我已经多次这样做了:将记录列入一个表格,其中“action”列包含open for editing等操作,删除,隐藏/取消隐藏,向上/向下移动,向前/向后移动......

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

让我们解决问题:

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

数据检索和呈现

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

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

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

管理操作和数据分页

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

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

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

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

这只是一个背景,代码和所有工作都在你身上。我只是想了解如何使用PHP + jQuery使用JSON和AJAX来实现这一目标。

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