关于使用Javascript和AJAX的CodeIgniter的一些问题

时间:2013-07-10 13:18:14

标签: php javascript ajax codeigniter

刚进入Codeigniter,我正在计划一个大型应用程序。我对CI如何处理JS文件和AJAX请求感到有点困惑。

我在项目中使用mod_rewrite。

  1. 在常规网页中,我会在我的文档标题中引用单独的JS脚本,以保持我的代码隔离和清洁。因为我正在使用mod_rewrite,所以我需要url helper中的函数来查找我的文件。这是单独的js文档中的问题,因为它们不执行php。所以当谈到AJAX调用时,当我没有使用site_url()函数时,我应该如何从我的JS文件中引用PHP控制器函数?

  2. 我如何编写可以通过AJAX而不是通过地址栏访问的功能?所以,假设我有一个用户控制器。你可以去用户/图片,你可以看到他们的照片。你去找用户/朋友,你可以看到他们的朋友。但我不希望您能够访问User / getData并查看所有打印出的原始数据。

  3. tl; dr使用单独的docs和mod_rewrite时,标准的JS和AJAX练习是什么?

    干杯。

2 个答案:

答案 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()

中进行一次此检查