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

Tom*_*Tom 2 php ajax model-view-controller codeigniter

我开始写相当多的ajax重网站,但我从来没有真正读过最佳实践,现在我也想要,我找不到一篇文章来解决我想知道的问题.我真正想要了解的是处理AJAX调用服务器端,诸如,如果所有数据都使用JSON/XML传回,或者是纯HTML,如果您尝试不将两者混合用于单个函数根据结果​​打电话.另外,由于我主要使用CodeIgniter(一个MVC框架)编程,你如何最好地将正常的页面加载请求与AJAX结果分开.

我可以制作AJAX网站,但是我想知道如何最好地建立一个AJAX网站,如果人们可以提供一些亮点或指出我正确的方向我会非常感激它.

谢谢汤姆

Glo*_*ish 6

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

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

起初看起来像这样的设置似乎是一个好主意:

/控制器/方法/格式

格式的默认值是'html'.我的想法是,我可以像/ object/view那样显示该对象的html页面,并且像/ object/view/json这样的东西返回该对象的json数据.

在实践中,这使事情变得非常混乱.您最终会在一个方法中混合使用许多不同的功能,这使得代码变得更加复杂.伊克.

相反,我现在做的是在应用程序/控制器下添加一个'api'子文件夹.该子文件夹中的控制器仅返回json数据.它更清洁.

不要在javascript中重新实现模板

通过AJAX调用获取内容时有两种方法.您可以返回某种编码数据(JSON,XML)并将其插入页面上的正确位置.或者你可以渲染一大块html,然后将其插入div中的某个地方.

例如,如果你去数据路径尝试坚持非常简单的标记结构,如span或简单的无序列表.在我的例子中,我有一部分导航从服务器返回,作为JSON编码链接的数组.

我的javascript然后会在菜单的正确结构中吐出它们.当菜单变得更复杂时,我的脚本包含了这种复杂性.现在,该菜单的标记在CI模板和javascript中都是重复的.

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

根据需要谨慎/谨慎地使用AJAX

您可以通过巧妙地使用AJAX请求来节省一些服务器资源.但是,如果你被带走(*coughlikemecough*),你很快就会发现每个用户操作都会运行几个AJAX请求.从性能角度来看,这通常更糟糕,因为每个请求都有其开销份额,并且开销将抵消仅请求所需资源的好处.

如果您发现单击一个界面元素会触发多个AJAX请求,这是一个红旗,可以仔细思考最新情况.你可能会创造复杂而没有好处.

JSON编码很不错

你可以json_encode()数据库查询的结果,它将生成你可以在脚本中使用的非常好的对象.语法很干净,并且与CodeIgniter的db函数返回的结果一起使用.

希望你能找到一些有用的东西.当你可以从别人的错误中学习时,总是更好!:)


Alf*_*red 5

JSON/XML或plain

我想你必须自己做出选择.您可以使用XML或JSON或仅使用纯HTML.它还取决于您的问题的复杂性.我会选择json因为PHP5有非常简单的方法来编码和解码json.

服务器端

  • 只需将AJAX操作放在控制器中即可.使用get获取数据和codeigniter post函数以在服务器上存储数据.
  • 我建议看看雅虎的开发者最佳实践,这将确保您的网站快速运行.如果可能,还应缓存ajax请求.

使用Javascript

jquery使json调用非常简单.您可以使用jQuery.get来检索信息,使用Jquery.post来存储数据.

我还将尝试在线提供一个简单的示例供您查看.

祝你好运,
Alfred Westerveld