Joomla - 如何在 php 文件中使用 Ajax 接收数据后连接到 db
Posted
技术标签:
【中文标题】Joomla - 如何在 php 文件中使用 Ajax 接收数据后连接到 db【英文标题】:Joomla - How to connect to db after receiving data with Ajax in php file 【发布时间】:2011-08-28 08:29:07 【问题描述】:我正在为 Joomla 1.6 构建一个组件。
我在连接数据库时遇到问题。
我已经使用 ajax 将数据发送到一个名为 rating.php 的 php 文件;数据毫无问题地发送到文件。但是,如果我离开线路,则不会发送数据
定义('_JEXEC')或死('限制访问');但我收到“访问受限”消息。
其次,即使我注释掉之前的检查,我也无法连接到这个 php 文件中的数据库,显然是因为我无法调用文件中的 Joomla 变量(如 getDBO())。我能做些什么来解决这两个问题?
谢谢
【问题讨论】:
【参考方案1】:Joomla 只会在您通过 index.php 浏览网站时设置 _JEXEC。换句话说,Joomla 不会对 Joomla “外部”的文件做任何事情。 _JEXEC不会被设置,数据库也不会连接。
为了解决这个问题,我会包含一个 Joomla 页面,以便加载数据库:
<?php
ob_start();
require 'index.php';
ob_end_clean();
// Rating code
?>
此代码包含您网站的主页,并使用output buffering 来实际输出您的网站。您不需要检查 _JEXEC,因为使用它的唯一原因是确保有人没有通过 Joomla 直接访问文件。在您的情况下,_JEXEC 无关紧要。
为使您的脚本更快,请将 index.php 替换为指向内容最少的内页的链接。主页往往比内页慢。
我没有测试过这段代码,但它应该可以工作。
【讨论】:
【参考方案2】:如果您正在开发一个组件,最好通过“index.php”而不是其他文件发出请求。这样您就可以确定框架已加载,并且您可以在处理请求时使用它的任何功能。另一个优点是更容易维护(尤其是在大型扩展上),因为当所有请求的入口点相同时,更容易遵循工作流程。
【讨论】:
以上是关于Joomla - 如何在 php 文件中使用 Ajax 接收数据后连接到 db的主要内容,如果未能解决你的问题,请参考以下文章