上次我做PHP时,我使用CodeIgniter。为了实现AJAX,我使用了XAJAX库,它非常简单并且能够调用私有控制器方法。不幸的是,XAJAX似乎与最新版本的CodeIgniter不兼容,或者可能只是因为它与php5.2 / 5.3不兼容。
我在考虑使用jQuery,但由于jQuery将请求发送到可访问的URL,因此无法调用私有方法。我想为某些ajax功能使用私有控制器方法的原因之一是因为我不希望通过URL直接访问该功能。
那么,是否有一个可以调用私有控制器方法的CodeIgniter的ajax库?
编辑: treeface的答案通过指出jQuery有一个.post()方法帮助了我。但是,我仍在为CodeIgniter寻找一个在框架中插入AJAX功能的库。我更喜欢通过PHP和CodeIgniter本身使用AJAX而不是在我的模板中输入jQuery。周围还有这样的图书馆吗?
答案 0 :(得分:2)
这是一个奇怪的问题。如果你想通过Javascript调用你服务器上的东西,可以用两种方法之一(暂时忽略网络套接字)来实现:
重要的是要注意jQuery有一个GET方法和一个POST方法,所以你对jQuery如何“向可访问的URL发送请求”的评论是真的,但不完整。它还supports post requests。
使用任何一种方法,都无法隐藏某些关于您正在调用哪种控制器方法或者如何调用它们的专用不满内容。如果您通过GET或POST发送信息,他们可以在浏览器中轻松模拟该功能,并向您的控制器发送一个完全复制代码中的请求的请求。对于任何面向公众的内容,您需要更全面的安全措施(如果需要),而不仅仅是限制对控制器功能的直接URL访问。
回到你的问题......“不能通过URL访问”......这似乎是一个奇怪的问题需要解决,因为如果你通过URL无法访问它,你可以通过它轻松访问它一个POST请求。但忽略了这一点,我这样做的方式就是这个......
创建一个处理传入POST请求(或POST请求组)的公共控制器方法。在此方法内部搜索特定变量,该变量将告诉控制器调用哪些私有方法。
在Javascript中,在POST消息中包含一个变量,该变量可以设置为您喜欢的任何值。您可以将此视为您的方法触发器,控制器将读取该触发器以决定调用哪个私有方法,如上所述。
您可以找到“访问私有方法”的任何CI AJAX库肯定会对此进行一些推导。 记住:您在javascript中执行的任何操作都可以被其他人看到,因此可以进行复制。