【问题标题】:Some questions about CodeIgniter with Javascript and AJAX关于 CodeIgniter with Javascript 和 AJAX 的一些问题
【发布时间】:2013-07-10 21:36:28
【问题描述】:

刚刚进入 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 实践是什么?

大家好。

【问题讨论】:

    标签: php javascript ajax codeigniter


    【解决方案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')
        }
    }
    

    【讨论】:

    • 啊好主意。我正在考虑在文档的开头声明变量,但是(这可能是幼稚的)这不是安全风险吗?
    • 不,我不这么认为。您只是在声明 uri 中已经存在的基本 url。
    • 对不起,我应该在那里解释更多。如果在 JS 中声明地址,任何查看页面源的客户端都可以看到该地址。显示您的站点层次结构不是安全风险吗?也感谢您的回答!
    • 不,通过声明 js 变量,您不会仅显示基本 URL 的站点层次结构。例如http://www.site.com。如果对您有帮助,请将答案标记为已接受。谢谢。
    【解决方案2】:

    我还在&lt;head&gt;like中声明了一个js变量

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

    然后,当您进行 AJAX 调用时,您可以像这样调用控制器

    baseUrl + 'controller/method'
    

    就确保只能从 AJAX 调用而不是通过地址栏调用方法而言,一种选择是发送一个 post 值并在执行类似操作之前检查它

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      相关资源
      最近更新 更多