我正在尝试通过集成自定义JS对象来改进PHP程序的UI。但是,由于这两种语言都没有对另一种语言的认识,我的方法感觉很尴尬和尴尬。
以呈现一组db记录和一些按钮组为例,例如隐藏,删除,编辑等。 PHP调用mysql并加载数据集,因此知道记录ID的人。作为格式化最终显示的记录的一部分,我创建了一些<table>
结构,其中包含id="key_part'.$recid.'"
形式的适当ID,自定义JS对象的HTML框架等,以及{{1}形式的调用各种JS例程。
然后我创建JS代码以了解各种ID,以便它知道如何使正确的HTML代码隐藏,可见,改变颜色,长出头发等等。
我认为,保持这两个不同代码库同步困扰我的问题。我总是试图避免这种情况,原因很明显。
是否有更好的方法不涉及第三方库意识形态的学习曲线,或者我已经基本达到了集成的实际限制?
提前感谢您的建设性意见!
答案 0 :(得分:1)
您可以尝试使用其中一个模板框架,如Mustache,dust.js或Handlebars。这样,您可以外化和标准化您可以在PHP和JavaScript之间共享的模板。
答案 1 :(得分:1)
我会解释一个实际的例子。
你说你有一堆你要编辑,删除,隐藏等的记录我已经多次这样做了:将记录列入一个表格,其中“action”列包含open for editing等操作,删除,隐藏/取消隐藏,向上/向下移动,向前/向后移动......
当然这一切都只能以PHP和表单提交或页面重定向的方式完成,但为什么不做这么多用户友好的管理数据呢?所以我使用了AJAX和JSON,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支持时能够提交,重定向,重新加载......