php - AJAX 以及如何在 PHP 中最好地处理它的服务器端

标签 php ajax model-view-controller codeigniter

我开始写很多重 ajax 的网站,但我从来没有真正阅读过最佳实践,现在我也想要,但找不到一篇文章来解决我想知道的问题。我真正想了解的是处理服务器端的 AJAX 调用,例如,是否应该使用 JSON/XML 传回所有数据,..或者是纯 HTML,你是否应该尽量不要将两者混合用于一个函数根据结果​​调用。此外,由于我主要使用 CodeIgniter(一种 MVC 框架)进行编程,因此如何最好地将正常页面加载请求与 AJAX 结果分开。

我可以制作 AJAX 网站,但我真的很想知道如何最好地制作 AJAX 网站,如果人们可以提供一些信息或为我指明正确的方向,我将不胜感激。

谢谢 汤姆

最佳答案

我最近使用 CodeIgniter 完成了一个 AJAX 繁重的站点,并在此过程中学到了很多东西。这些是我学到的一些东西(阅读:我犯的错误):

不要从同一个方法返回 html 页面和 json。

起初,这样设置似乎是个好主意:

/ Controller /方法/格式

默认格式为“html”。我的想法是,我可以让/object/view 之类的东西显示该对象的 html 页面,并让/object/view/json 之类的东西返回该对象的 json 数据。

在实践中,这会使事情变得非常困惑。您最终在一个方法中混合了许多不同的功能,这使得代码变得更加复杂。恶心。

相反,我现在做的是在 application/controllers 下添加一个“api”子文件夹。该子文件夹中的 Controller 仅返回 json 数据。它更干净。

不要在 javascript 中重新实现您的模板

通过 AJAX 调用获取内容时有两种方法。您可以返回某种编码数据(JSON、XML)并将其插入页面上的正确位置。或者您可以呈现一段 html,然后将其插入到某处的 div 中。

如果您走数据路线,请尝试坚持使用非常简单的标记结构,例如跨度或简单的无序列表。在我的例子中,我有一部分导航是作为 JSON 编码链接数组从服务器返回的。

然后我的 javascript 会以正确的菜单结构输出它们。当菜单变得更加复杂时,我的脚本就包含了这种复杂性。现在,该菜单的标记在 CI 模板和 javascript 中被复制。

在这种情况下,最好让服务器返回包含菜单标记的 html block ,而不是尝试从客户端的数据构建它。

谨慎/小心/仅在需要时使用 AJAX

巧妙地使用AJAX请求可以节省一些服务器资源。但是,如果您得意忘形 (*coughlikemecough*),您很快就会发现自己在针对每个用户操作运行多个 AJAX 请求。从性能的角度来看,这通常更糟,因为每个请求都有自己的开销份额,并且该开销会抵消仅请求所需资源的好处。

如果您发现单击一个界面元素会触发多个 AJAX 请求,这是一个危险信号,需要仔细考虑发生了什么。您可能会在没有任何好处的情况下创造复杂性。

JSON 编码很好

您可以 json_encode() 数据库查询的结果,它会生成非常好的对象,您可以在脚本中使用这些对象。语法简洁,与 CodeIgniter 的数据库函数返回的结果配合得很好。

希望您发现其中一些有用。当您可以从别人的错误中吸取教训时,总是更好!其他人! :)

关于php - AJAX 以及如何在 PHP 中最好地处理它的服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/947358/

相关文章:

php - 这个 PHP 重定向不安全吗?

php - 在产品属性下拉菜单 woocommerce 旁边添加工具提示描述

php - 更新MySQL表的特定记录

Javascript insideHTML 与其他页面的 session PHP

php - 在 JavaScript (jQuery) 中隐藏 ajax 路径

c# - IIS 显示 404 但文件存在

php - elasticsearch根据位置查找文档

javascript - 在 Angular gridOptions 中调用另一个函数

android - 在模型中为 AsyncTask 创建回调以更新 Activity

jQuery Ajax加载div问题