刚进入Codeigniter,我正在计划一个大型应用程序。我对CI如何处理JS文件和AJAX请求感到有点困惑。
我在项目中使用mod_rewrite。
在常规网页中,我会在我的文档标题中引用单独的JS脚本,以保持我的代码隔离和清洁。因为我正在使用mod_rewrite,所以我需要url helper中的函数来查找我的文件。这是单独的js文档中的问题,因为它们不执行php。所以当谈到AJAX调用时,当我没有使用site_url()函数时,我应该如何从我的JS文件中引用PHP控制器函数?
我如何编写可以通过AJAX而不是通过地址栏访问的功能?所以,假设我有一个用户控制器。你可以去用户/图片,你可以看到他们的照片。你去找用户/朋友,你可以看到他们的朋友。但我不希望您能够访问User / getData并查看所有打印出的原始数据。
tl; dr使用单独的docs和mod_rewrite时,标准的JS和AJAX练习是什么?
干杯。
答案 0 :(得分:1)
我个人所做的是在我的模板的标题部分中声明一个js变量,然后再执行任何js声明:
var base_url = <?=base_url()?>
然后,您可以通过集成的任何js文件访问此base_url
。关于第二点,您始终可以将用户从控制器重定向,如下所示:
public function some_function(){
if($this->input->post(null)){
//your ajax code here
}else{
redirect(base_url(), 'refresh')
}
}
答案 1 :(得分:1)
我还在<head>
中声明了一个js变量
var baseUrl = '<?php print(base_url()); ?>';
然后,当您进行AJAX通话时,可以像
一样调用控制器baseUrl + 'controller/method'
在确保方法只能从AJAX调用而不是通过地址栏调用方面,一个选项是发送一个帖子值并在你做任何事情之前检查这个
if($this->input->post('ajax_call'))
{
//Do something
}
如果您将所有ajax方法放入同一个控制器中,则只需在__construct()