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的主要内容,如果未能解决你的问题,请参考以下文章

joomla 2.5中的require_once如何

如何在joomla中建立链接

在 Joomla 组件开发中导入 PHP 代码

在外部PHP文件中加载Joomla 3.x框架和模块

如何导入Joomla!来自自定义文件中的JFactory

如何在主页和类别菜单中隐藏Joomla自定义字段?