0

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

我在我的项目中使用 mod_rewrite。

  1. 在常规网页中,我会在文档的标题处引用单独的 JS 脚本,以保持我的代码隔离和干净。由于我使用的是 mod_rewrite,我需要 url 帮助程序中的函数来查找我的文件。这是单独的 js 文档中的一个问题,因为它们不执行 php。那么当涉及到 AJAX 调用时,当我没有使用 site_url() 函数时,我应该如何从我的 JS 文件中引用 PHP 控制器函数?

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

tl;dr 使用单独的文档和 mod_rewrite 时,标准 JS 和 AJAX 实践是什么?

干杯,伙计们。

4

2 回答 2

1

我还声明了一个js变量之<head>类的

var baseUrl = '<?php print(base_url()); ?>';

然后,当您进行 AJAX 调用时,您可以调用控制器,例如

baseUrl + 'controller/method'

在确保只能从 AJAX 调用而不是通过地址栏调用方法方面,一个选项是发送一个 post 值并在你做任何类似的事情之前检查这个

if($this->input->post('ajax_call'))
{
     //Do something
}

如果您将所有 ajax 方法放入同一个控制器中,则只需在__construct()

于 2013-07-10T13:36:28.907 回答
1

我个人所做的是在我的模板的标头部分中声明一个 js 变量,然后再进行任何这样的 js 声明:

var base_url = <?=base_url()?>

然后base_url,您集成的任何 js 文件都可以访问它。关于第二点,您始终可以像这样从控制器重定向用户:

public function some_function(){
    if($this->input->post(null)){
        //your ajax code here
    }else{
        redirect(base_url(), 'refresh')
    }
}
于 2013-07-10T13:20:47.817 回答