2012-04-12 120 views
0

所以我有一个脚本被AJAX请求调用,它位于CI安装根目录下名为'ajax'的文件夹中。我有这样的代码在我的AJAX文件的顶部:从外部脚本调用database.php CI

define("BASEPATH", "../../system/"); 
include("../../application/config/database.php"); 

所以它抓住database.php中文件成功,但它告诉我,有“没有选择的数据库”。为什么?

+0

为什么你不想让你的Ajax调用一个标准的CI控制器? – AndrewR 2012-04-12 21:43:44

+0

如果它位于app文件夹之外的目录中,我该怎么做? – Sneaksta 2012-04-12 22:37:46

+0

太棒了!我想到了。你认为可以直接从模型输出数据吗?这样我就不必将它发送给控制器,然后就可以输出另一个输出,或者这是非常糟糕的做法吗? – Sneaksta 2012-04-13 00:42:55

回答

0

在模型中输出数据打破了codeIgniter旨在实现的mvc的传统结构。但是,mvc是一种设计模式,不是严格意义上的标准,所以除了你自己和其他人将会在你之后或者将来工作你的代码之外,你不会伤​​害任何人。

和AndrewR一样,为什么不把ajax调用给控制器[因为这是mvc的约定]?如果它将在应用程序文件夹之外,那么它可能不应该通过网络浏览器访问。

而且你可以抢笨的全局对象的实例作为$_CI =& get_instance();并加载数据库对象这样$db = $_CI->load('database');

希望这有助于!

+0

谢谢队友。我结束了使用安德鲁建议的方式,我确实很高兴我做到了!让整个事情更有意义!意味着我可以拒绝对ajax控制器访问以欺骗用户。得到它一切工作很好!我不想使用传统方法的原因仅仅是因为它可以节省时间,因为有很多数据库查询可以运行,等等。 – Sneaksta 2012-04-13 09:59:26